0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI時代の並行開発はGit Worktreeが最適!ブランチ切り替え不要で開発効率を向上

0
Posted at

はじめに

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標準機能なので追加ツールも不要です。まだ使ったことがない方は、ぜひ一度試してみてください。開発効率が大きく向上するはずです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?