AIエージェントが教えてくれたGit Worktreeの真価
Working with Git Worktrees in Magit

筆者はAIコーディングエージェントがタスクごとにworktreeを作るのを見て、10年越しにその存在を認識した。worktreeは同じリポジトリに複数の作業ディレクトリを追加し、ブランチ切り替えの手間やビルド状態の混在を解消する。MagitではZキーでworktreeを操作でき、各worktreeが独立したstatusバッファを持つ。依存関係やビルドキャッシュの再構築が必要というコストはあるが、並行作業の強力な味方になる。
worktreeはクローンではないので、どこかでfetchすればすべてに反映され、作成はほぼ一瞬で終わる。
HNでの議論
49- cdmckay
worktreeで困るのは、変更をテストしたいときにworktreeをあちこち行き来しなきゃいけないことだ。
自分の場合は、リポジトリのコピーを複数持って、それぞれに専用の環境を用意する方がうまくいく。たとえばrepo-a、repo-bみたいにね。それぞれapp-a.foo.localhost、app-b.foo.localhostに割り当てる感じだ。
- simonhamp
copy-on-writeクローンを使えばいいだけだよ。ずっと柔軟で速くて、考えるのも簡単だ。
worktreeを扱いやすくしようとするツールに時間を費やす意味がわからない。今の働き方にはworktreeは適切な抽象化じゃないんだから。
- miggol
worktreeのちょっとした制限は、すべてのworktreeを通じてブランチを一度しかチェックアウトできないことだね。まあgitの仕組みがそうなんだろう。
でも、別のworktreeですでにチェックアウトされているブランチをチェックアウトしようとすると、Magitはきっぱり拒否する。せめて次のどちらかを提案してくれたらいいのに:
1. 代わりにそのworktreeに切り替える
2. 他のworktreeでHEADをデタッチして、ここでチェックアウトする
これならすごく改善されるはず! とはいえ文句は言えない、Magitは大好きだし自分でハックしてもいいくらい。ただelispが苦手なだけなんだ。
- brabel
作者として、AIエージェントのおかげでworktreeを使うようになった。Magitは大好きだけど、git worktreeをそんなにうまく扱えるとは知らなかった! 教えてくれてありがとう、すぐにMagitでworktreeを管理し始めるよ。
- prima-facie
worktreeが必要なときはgrmを使っている。これで管理が少し楽になる。https://github.com/hakoerber/git-repo-manager