Git worktreeを使ってみた感想:stash地獄からの脱出
どうも、やんてらです。
久々にエンジニアっぽい話でも書きます。最近、Gitの「worktree」という機能を使い始めました。
……いや、前からある技術なんですけど、「branchで十分やろ」と思って完全にスルーしてました。
💡 Git worktreeとは?
ざっくり言うと、1つのリポジトリで複数のブランチを別ディレクトリに展開できる機能です。git cloneを何回もする必要もなく、同じリポジトリの別のブランチを同時に開発できます。
個人的に「これは便利やな」と思ったのが、stashを使わなくていい点。git stashって便利やけど、意外とトラップ多くないですか?
どのブランチのstashだったか忘れるし、コンフリクトした時は地獄。
一度間違ってstash dropした時なんて、ほんと泣きました。
あれは人類の涙ポイントです。
🚀 worktreeの強み:物理的なブランチ切り替え
worktreeでは、そもそも別のディレクトリで作業できるので、
「commitしなきゃ切り替えできない問題」が消えます。
まるで別々にgit cloneしたような感覚。
OSS開発してる人ならわかると思いますが、
「forkしてPR出す」ようなあの距離感に近い。
ただしリポジトリは1つ。これは地味に便利。
特にClaude CodeやCursorなどAIアシスタントで並列開発してる場合、
worktreeはマジで必須級です。
複数の修正を同時進行するなら、branchでは限界があります。
🐋 Dockerとの相性問題
とはいえ、完璧というわけでもなくて。
今ちょっと苦戦してるのが、Dockerコンテナとの同期問題。
worktreeで作業しても、その変更をコンテナにうまく反映できないことがあるんですよね。
コード上だけのテストなら問題なし。
でも実際にアプリを立ち上げると「どのvolumeを参照してるんだ?」となる。
ここは今後の課題。もし詳しい方いらっしゃればぜひコメントで教えてください。
🧩 Spec Driven Designの話
話は変わりますが、最近耳にするSpec Driven Design。
まだ自分の中で整理がついてないんですが、
「仕様からコードを導く」という思想は今後主流になる気がします。
そのうち自動生成もセットで来そうですよね。
……それまでに理解しておきたいところです。
✍️ まとめ
- worktreeはstash不要で安全に並行開発できる
- branch切り替えのストレスが消える
- Dockerとの連携はまだ課題あり
- 並列開発するエンジニアには特におすすめ
Git使い慣れてる人でも、**「これもっと早く知りたかった…!」**ってなると思います。
興味ある方は、ぜひ一度試してみてください。

