Git ワークフローガイド

OpenCode Worktree ガイド: Git で作業を安全に分離する

OpenCode worktree は、同じリポジトリの履歴を共有しながら、作業ごとに別のディレクトリとブランチを用意する Git の仕組みです。Git で作成し、そのディレクトリに移動して OpenCode を起動します。並行作業のファイルとレビュー範囲を分けたいときに役立ちます。

共有 Git リポジトリにつながる三つの独立した OpenCode 作業スペース
概念図: 各 worktree の checkout は独立し、Git の履歴を共有します。

先に結論

Git worktree で OpenCode の並行作業を分離する

リンクされた worktree は Git が管理し、OpenCode は開いたプロジェクトディレクトリで動きます。各 worktree はファイル、index、ブランチが別ですが、Git の履歴とオブジェクトを共有します。複数タスクが同じ checkout を編集する場合に使います。データベース、環境サービス、秘密情報、Git の外にある生成物は分離されません。

OpenCode worktree は、同じリポジトリの履歴を共有しながら、作業ごとに別のディレクトリとブランチを用意する Git の仕組みです。Git で作成し、そのディレクトリに移動して OpenCode を起動します。並行作業のファイルとレビュー範囲を分けたいときに役立ちます。

関連する OpenCode ガイド: OpenCode Agents と AGENTS.md · OpenCode JSONC 設定 · OpenCode permissions · OpenCode session storage.

1. Git worktree で OpenCode の何が変わるか

Git worktree は、同じリポジトリに接続された別の作業ディレクトリです。メインの checkout を main に置いたまま、隣のフォルダーで work/auth を checkout できます。ファイルと選択中のブランチは分かれますが、Git のオブジェクトと履歴は共有されるため、作業ごとの clone は通常不要です。

この流れに OpenCode 専用の worktree モードは必要ありません。新しいディレクトリから CLI を起動すると、その場所がプロジェクトのコンテキストになります。グローバル設定は適用されることがありますが、未追跡ファイルやローカル環境が自動でコピーされるわけではありません。

2. リンク worktree を三つの安全な手順で作る

まず現在の checkout のブランチと変更を確認します。きれいな開始状態なら、新しい作業に由来する差分を見分けやすくなります。リポジトリのルートから新しいブランチを作り、元のディレクトリの外側にある兄弟フォルダーへ checkout します。

次の例は現在の commit から work/auth を作り、../app-auth に配置します。ブランチがすでにある場合は、別の worktree で checkout されていないことを確認してください。Git は同じブランチを複数のリンク worktree で同時に使うことを通常は防ぎます。

メインリポジトリのルートから実行します。新しい branch は現在の commit から始まります。

例: 機能 worktree を作って開く
git status --short --branch
git worktree add -b work/auth ../app-auth
cd ../app-auth
opencode
git worktree list
git -C ../app-auth status --short --branch

3. 正しいディレクトリから OpenCode を起動する

cd ../app-auth の後、そのシェルで opencode を実行します。現在のディレクトリが重要な境界です。worktree ごとに別のターミナルやセッションを使い、ファイル編集を許可する前にプロジェクトのルートを確認します。最初はブランチと確認対象ファイルを要約させるなど、読み取りだけの依頼が安全です。

セッションごとに範囲の狭い作業を割り当て、ブランチ名をメモします。一方で認証テスト、もう一方でドキュメントを担当できます。同じファイルや生成先を二つのセッションから同時に変更しないでください。ディレクトリを分けても、複数エージェントの調整は自動化されません。

4. ブランチ、ファイル、サービスの衝突を防ぐ

worktree は Git 管理下のファイルと index を分けますが、コンテナーやセキュリティ境界ではありません。ローカル DB、テストサーバー、cache、Docker project、外部アカウントは複数セッションで共有される場合があります。必要なら DB/schema、port、project 名、使い捨て環境を分けてください。

Git が checkout するのは選んだ commit に追跡されたファイルです。.env、証明書、cache、build output などの未追跡・ignore ファイルは新しい worktree に現れるとは限りません。必要な環境だけ再設定し、秘密情報は承認済みの方法で読み込み、git status --short --branch を作業前後に確認します。

別の checkout を作る前の簡単な判断表
状況worktree の適性開始前の確認
別ブランチの独立機能向いている担当者とファイル範囲を決める。
現在の差分を読むだけの調査通常は不要同じ checkout の別セッションで確認できる。
複数タスクが同じ DB や server を使用条件付きschema、port、使い捨て service を分ける。
複数タスクが同じファイルを編集不向き編集を順番に行うか責任範囲を分ける。

5. 変更を失わずにレビュー、マージ、削除する

worktree のブランチは独立した変更としてレビューします。git diff を確認し、そのディレクトリから必要なテストを実行して、意図したファイルだけが含まれることを確かめます。テスト後はチームの通常手順で merge または rebase します。commit を共有するまでは、別 checkout に変更は現れません。

削除前に未 commit の変更を確認し、commit、stash、保管のどれにするか決めます。git worktree remove ../app-auth は clean な checkout を削除します。変更があると Git は force なしでは拒否します。force を通常の掃除に使わないでください。手作業でフォルダーを消した後の git worktree prune は古い登録を整理します。

機能ブランチの worktree を検証して main にマージし、未完了の作業を分離したまま残す図
必要な変更をレビューして保持した後に、リンクされた作業ディレクトリを削除します。

6. worktree と別セッションを使い分ける

ブランチ、ファイルの snapshot、数時間から数日残すレビュー境界を分けたいときは worktree が向いています。読み取り調査や未 commit のファイルを見たい作業には、同じ checkout の別セッションが簡単です。作業が順番に進み、一つのディレクトリだけが必要なら通常の branch 切り替えで足ります。

worktree では branch 命名、依存関係、サービス分離、テスト、merge、削除の管理が増えます。複数エージェントが同じファイルを編集するなら、最終 merge が難しくなることがあります。重ならない変更に分けるか、編集を順番に行ってください。

7. 制限とよくあるトラブルの確認点

git worktree add が branch 使用中と表示したら、git worktree list を見て別 branch を作るか既存 worktree に戻ります。OpenCode のファイルが想定と違う場合は、設定を変える前に terminal の場所と project root を確認してください。ignore や未追跡ファイルは checkout に含まれません。

テストがセッション間で干渉する場合は、Git の外側を確認します。DB、port、一時フォルダー、generator、共有 cache が原因になりやすいです。削除ができない場合は worktree 内で git status を実行し、必要な変更を保存してから整理します。main の checkout は統合用に残しておきます。

OpenCode worktree のよくある質問

OpenCode で Git worktree を使うには?

リポジトリで git worktree add -b branch-name ../folder-name を実行し、新しいフォルダーに移動して opencode を起動します。編集前に branch と場所を確認してください。

OpenCode に worktree 専用コマンドはありますか?

この手順は Git の worktree command を使います。OpenCode は新しい project directory から起動でき、専用 flag は必要ありません。

二つのセッションで同じ branch を使えますか?

Git は同じ branch を複数のリンク worktree で同時に checkout することを通常は防ぎます。別 branch を作るか、すでに使っている checkout に戻ります。

環境ファイルは新しい worktree にコピーされますか?

Git が取得するのは追跡ファイルです。.env などの ignore・未追跡ファイルは保証されません。環境を準備し、秘密情報を Git に入れないでください。

Git worktree を安全に削除するには?

status を確認し、変更を保存または commit してから git worktree remove path を実行します。古い登録は git worktree prune で整理できます。

公式ドキュメント

Git と OpenCode のドキュメントを 2026年9月23日に確認しました。worktree のライフサイクル command は Git の機能です。利用中の Git の option を確認してください。

関連する OpenCode ガイド: OpenCode Agents と AGENTS.md · OpenCode JSONC 設定 · OpenCode permissions · OpenCode session storage.