はじめに
ChatGPT、Codex、Claude Code、GitHub CopilotなどのAIコーディングツールが普及し、AIと一緒に開発することが当たり前になってきました。
最近では、
- AIに実装を依頼している間に別の機能を開発する
- 複数のAIエージェントへ異なるIssueを同時に依頼する
- レビュー待ちのブランチを残したまま次のIssueへ着手する
といった開発スタイルも珍しくありません。
しかし、従来のGit運用では、ブランチを頻繁に切り替える必要があります。
git switch feature/issue-101
# 開発
git switch hotfix/login
# バグ修正
git switch feature/issue-101
この運用では次のような問題が発生します。
- 未コミットの変更があるとブランチを切り替えられない
-
git stashが増えて管理が面倒 - VS Codeを複数開いて作業できない
- AIエージェントごとに独立した開発環境を用意できない
これらを解決してくれるのが Git Worktree です。
Git Worktreeとは?
Git Worktreeは、
1つのGitリポジトリから複数の作業ディレクトリを作成できるGit標準機能
です。
通常は次のように1つの作業ディレクトリだけです。
working/
└── kabutrack-api/
しかしWorktreeを利用すると、
working/
├── kabutrack-api/
│ └── develop
│
├── kabutrack-api-feature-stock/
│ └── feature/stock-api
│
├── kabutrack-api-feature-chart/
│ └── feature/chart
│
└── kabutrack-api-hotfix/
└── hotfix/login
このように複数のディレクトリを作成できます。
それぞれ別ブランチをチェックアウトした状態で作業できます。
共有されるものは
- Git履歴
- Commit
- Remote Repository
- Objects
です。
つまり、
Git Repositoryは1つのまま、作業フォルダだけを複数持つ
イメージになります。
通常のブランチ運用との違い
例えば2つのIssueを同時に開発するとします。
従来
feature/stock-api
↓
git switch
↓
feature/chart
↓
git switch
↓
feature/stock-api
毎回ブランチを切り替える必要があります。
未コミット変更があると
error: Your local changes would be overwritten
となるため、
git stash
することも少なくありません。
Worktree
VS Code①
kabutrack-api
develop
VS Code②
kabutrack-api-feature-stock
feature/stock-api
VS Code③
kabutrack-api-feature-chart
feature/chart
VS Code④
kabutrack-api-hotfix
hotfix/login
各ブランチを別フォルダで開けるため、
一度も git switch する必要がありません。
AI開発との相性が抜群
例えば株式分析サービス Kabutrack を開発しているとします。
AIへ
Stock APIを実装してください
と依頼します。
別のAIへ
チャート画面を実装してください
さらに別のAIへ
ログイン画面のバグを修正してください
と依頼すると、
Worktree①
kabutrack-api
develop
Worktree②
feature/stock-api
Worktree③
feature/chart
Worktree④
hotfix/login
それぞれ独立した環境でAIが作業できます。
最近のAIエージェント(Codex CLI・Claude Codeなど)はカレントディレクトリを前提にコード生成するため、Worktreeとの相性は非常に良いです。
Worktreeを作成する
既存ブランチ
git worktree add ../kabutrack-api-feature-stock feature/stock-api
新しいブランチを同時に作成
git worktree add \
-b feature/stock-api \
../kabutrack-api-feature-stock
これだけで新しい作業ディレクトリが作成されます。
Worktree一覧を確認する
git worktree list
例
/home/user/working/kabutrack-api
develop
/home/user/working/kabutrack-api-feature-stock
feature/stock-api
/home/user/working/kabutrack-api-feature-chart
feature/chart
/home/user/working/kabutrack-api-hotfix
hotfix/login
VS Codeで開く
それぞれ
code kabutrack-api
code kabutrack-api-feature-stock
code kabutrack-api-feature-chart
code kabutrack-api-hotfix
これだけです。
VS Codeを4つ起動しても問題ありません。
git branch の「+」とは?
Worktreeを利用すると
git branch
結果が
+ feature/chart
+ feature/stock-api
* develop
のようになります。
意味は
| 記号 | 意味 |
|---|---|
* |
現在のWorktreeで使用中 |
+ |
別のWorktreeで使用中 |
つまり、
+ feature/chart
は
他のWorktreeでチェックアウトされています
という意味です。
そのため
git branch -d feature/chart
を実行すると
error: Cannot delete branch 'feature/chart'
checked out at ...
となります。
Worktreeを削除する
不要になったら
git worktree remove ../kabutrack-api-feature-chart
その後
git branch -d feature/chart
でブランチを削除できます。
Worktree一覧から不要なものを整理する
確認
git worktree list
削除
git worktree remove ../kabutrack-api-feature-stock
リモート追従ブランチ整理
git fetch --prune
マージ済みブランチ削除
git branch --merged \
| egrep -v '(^\*|main$|master$|develop$)' \
| xargs -r git branch -d
AI開発におすすめの構成
私は次のように管理しています。
working/
├── kabutrack-api/
│ develop
│
├── kabutrack-api-feature-stock/
│ feature/stock-api
│
├── kabutrack-api-feature-chart/
│ feature/chart
│
├── kabutrack-api-hotfix/
│ hotfix/login
│
└── kabutrack-api-experiment/
feature/llm-poc
用途は
- develop:最新コード確認
- feature:通常開発
- hotfix:障害対応
- experiment:PoC・AI検証
AIエージェントごとに担当ディレクトリを分けることで、お互いの作業が干渉しません。
Git Worktreeのメリット
- ブランチ切り替え不要
-
git stashがほぼ不要 - VS Codeを複数起動できる
- AIエージェントごとに独立した環境を用意できる
- レビュー待ちでも次の開発を開始できる
- Git標準機能なので追加ツール不要
- ディスク容量の増加が少ない
注意点
- 同じブランチを複数のWorktreeで利用することはできない
-
+が付いたブランチは削除・リネームできない - Worktreeを削除してからブランチを削除する必要がある
まとめ
AI時代の開発では、「AIに任せている間に別の作業を進める」「複数のAIエージェントへ並行して実装を依頼する」といった並列開発が一般的になっています。
Git Worktreeを活用すれば、ブランチの切り替えやgit stashに悩まされることなく、複数の開発タスクを独立した環境で進められます。
特に、ChatGPT、Codex、Claude Code、GitHub CopilotなどのAIツールを日常的に利用している開発者には非常におすすめの機能です。
Git標準機能なので追加ツールも不要です。まだ使ったことがない方は、ぜひ一度試してみてください。開発効率が大きく向上するはずです。