Git Worktrees(experimental)
概要
複数のタスクを並行するとき、各 Gemini セッションにコードベースの独立したコピーを持たせる仕組み。Git worktree は、リポジトリ履歴を共有しつつ、それぞれ独自のファイルとブランチを持つ作業ディレクトリを作る。
活発に開発中の実験的機能。
仕様
有効化
- 実験的機能なので、設定で有効にする必要がある
/settingsで Enable Git Worktrees をtrueにするか、settings.jsonのexperimental.worktreesをtrueにする
使い方
--worktree(-w)フラグで隔離された worktree を作り、その中で Gemini CLI を起動する- 名前を指定した場合、その値が
.gemini/worktrees/配下のディレクトリ名とブランチ名の両方になる - 名前を省略すると、ランダムな名前が自動生成される(例:
worktree-a1b2c3d4) - 新しい worktree ごとに、プロジェクトの手順に従って開発環境を初期化する必要がある(依存関係のインストール、仮想環境の設定、標準のビルド手順など)
終了時の挙動
/quitやCtrl+Cで worktree セッションを抜けても、作業が失われないよう worktree はそのまま残る。未コミットの変更(変更ファイル、ステージ済みの変更、未追跡ファイル)と新しいコミットも残る- Gemini は worktree もブランチも自動削除しない。 使い終わった worktree の後片付けはユーザーの責任
- 終了時に、作業を再開する方法と、不要になった worktree を手動で消す方法が表示される
再開
worktree ディレクトリに移動し、--resume とセッション ID で起動する。
手動管理
- 保持された worktree の掃除:
git worktree remove <path> --forceとgit branch -D <branch> - 手動作成:
git worktree add ../project-feature-search -b feature-searchしてからその中でgemini
設定
{
"experimental": {
"worktrees": true
}
}
gemini --worktree feature-search
gemini --worktree
cd .gemini/worktrees/feature-search
gemini --resume <session_id>
git worktree remove .gemini/worktrees/feature-search --force
git branch -D worktree-feature-search
関連
facts/gemini-cli/configuration.mdfacts/gemini-cli/commands.md