nuthatch.
git worktree を、作る・移る・消す。ぜんぶ hop ひとつで。
- hop feat/x --create
- hop
- hop -
- hop rm feat/x
- hop clean
できること
設定ファイルも状態ファイルもありません。どのリポジトリでも、入れたその日から使えます。
作る
hop feat/x --create で、ブランチと worktree をその場で作ります。置き場所はいつも <root の親>/_worktree/<repo>/<branch> です。
移る
hop で一覧から選んで cd します。hop <branch> は直接、hop - は直前の worktree へ、hop root は元のクローンへ戻ります。
消す
hop rm <branch> で worktree を消します。ブランチは残ります。hop clean は、マージ済み、upstream が消えた、作業ディレクトリが消えた worktree を見つけ、一覧を見せてまとめて確認してから消します。
安全のために
- 未コミットの変更があれば止まる。それでも消すときだけ --force を付けます。
- git がロックした worktree には触らない。--force を付けても消しません。hop がロックを外すこともありません。
- _worktree の外にある worktree は確かめる。選択画面から消すときは、必ず y/N を聞きます。
- hop clean が自動で消すのは、_worktree 配下のものだけ。それ以外は、--ext を付けない限り候補に入りません。
AI エージェントにも
- 対話なしで終わる。ブランチを指定すれば非対話で完結し、--json はどこでも使えます。
- パスは stdout、ログは stderr。結果をそのまま変数に受けられます。エラーは次の一手を教えてくれます。
- プラグインで使い方を教えられる。Claude Code と Codex 向けに、using-hop スキルを配っています。
p=$(hop feat/x --create) # path on stdout
hop ls --json # {"schemaVersion":1,"command":"ls","data":[...],"warnings":[]}インストール
バイナリ(おすすめ)
curl -fsSL https://raw.githubusercontent.com/n-seiji/nuthatch/main/install.sh | sh
# or, with mise
mise use github:n-seiji/nuthatch- •macOS (arm64 / x64) と Linux (x64) 用です。Node.js は要りません。
- •hop は ~/.local/bin に入ります。HOP_INSTALL_DIR で変えられます。
- •v0.2.1 以降のバイナリには、ビルドの来歴証明 (build-provenance attestation) が付きます。
npm
npm i -g @n-seiji/nuthatch
# or, with mise
mise use -g npm:@n-seiji/nuthatch- •Linux arm64 にはバイナリがないので、こちらを使います。
- •Node で動くぶん遅くなります (README の計測で hop ls は約 400ms、バイナリは約 60ms)。
シェル連携 (zsh)
# ~/.zshrc
eval "$(hop init zsh)"- •これで hop が、選んだ worktree へそのまま cd します。
エージェント用プラグイン
# Claude Code
/plugin marketplace add n-seiji/nuthatch
/plugin install hop@nuthatch
# Codex
codex plugin marketplace add n-seiji/nuthatch
codex plugin install hop