ブランチとレビュー
ブランチセッションとは、自分専用の git ブランチで、元になったフォルダの自分専用のチェックアウトの中で働くセッションです。内側ではこれは git worktree です。同じリポジトリの 2 つ目の作業コピーで、履歴は共有しつつ、ファイルとインデックスは独自に持ちます。元のセッションでのあなたの作業には触れません。ブランチができたら、そのセッション自身からマージし戻します。
ブランチは、主な作業の流れの隣でアイデアを試したいとき、未コミットのファイルで互いにぶつからない複数のエージェントに 1 つのタスクを分けたいとき、あるいは捨てるかもしれない何かをエージェントに探らせたいときに使います。
この章ではレビューウィンドウも扱います。これはブランチかどうかを問わず、フォルダを持つどのセッションでも使えます。
ブランチを始める
フォルダを持つセッションはどれでも分岐できます。
- サイドバーで右クリックして**新規ブランチ…**を選ぶ
- セッションヘッダーの ⋯ メニューで**新規ブランチ…**を選ぶ
- ⌘K パレットで**新規ブランチ…**を選ぶ(ステージ上のセッションに作用します)
新規ブランチのシートには「フォルダ のコピー上に、専用の git ブランチを持つ独立したセッション。「セッション」でのあなたの作業には触れません。用意ができたらマージし戻してください。」と書かれています。次の項目があります。
| 項目 | 役割 |
|---|---|
| 何をさせますか? | 新しいセッションの最初のメッセージ。たとえば「セッションキャッシュを SQLite に移せるか試して」。空にするとエージェントは手持ちなしで開きます。 |
| 名前 | セッションの名前であり、ブランチ名の元にもなります。空にすると、名前はメッセージから取られます。 |
| エージェント | ブランチで動くエージェント。既定では分岐元のセッションのエージェントです。 |
| 開始元 | 起点となるブランチ。最初の項目はフォルダの現在のブランチ「ブランチ(現在)」、切り離されたチェックアウトでは現在のコミットです。続いて他のローカルブランチが、コミットの新しい順に並びます。下の注を参照してください。 |
- 開始元(現在のブランチ): 「その最新コミットから — 未コミットの変更は残されます。ここへマージし戻します。」
- 開始元(別のブランチ): 「ブランチ の最新コミットから。そして ブランチ へマージし戻します。」起点のブランチが、セッションがマージし戻す先にもなります。
項目の下に、作成されるブランチ wt/<名前> が表示されます。名前は小文字化され、その他の文字はハイフンになります。開始(⌘⏎)をクリックしてください。
注: 分岐されるのはコミット済みの作業だけです。元のフォルダの未コミットの変更はそこに残り、新しいチェックアウトにはコピーされません。
シートが最初に確かめること
シートはマシンにそのフォルダが何であるかを問い合わせ(「フォルダ を確認中…」)、それに応じて変わります。
- リポジトリ: 上記の開始元の選択。リポジトリに
.worktreeincludeファイルがあると、シートは「.worktreeinclude の指定どおり、次のものもコピーします:…」と、そこに列挙されたファイルを示します。これらは git が追跡しないファイル(ローカルの.envなど)で、新しいチェックアウトにコピーされます。 - まだコミットのないリポジトリ: 「リポジトリにまだコミットがないため、ブランチは空の最初のコミットから始まります。フォルダ内のファイルは残されます。」
- リポジトリでない: 「フォルダ はまだ git リポジトリではありませんが、ブランチには必要です。」リポジトリにする (git init) にチェックを入れると、そこで
git initが実行されます。「フォルダ内のすべてが最初のコミットに入り、ブランチはそこから始まります。」このチェックがないと開始は無効です。 - マシンが実行中でない: 「マシンが実行中ではありません — フォルダは起動後に確認されます。」git リポジトリでなければリポジトリにするのオプションは、マシンの起動時に適用されます。
ヒント: エージェントも
bromure-delegationMCP サーバーのworktree_createツールでブランチを始められます。そうしたブランチは、あなたが始めたものとまったく同じように現れます。エージェントの協働を参照してください。
ブランチセッション
ブランチセッションはサイドバーで分岐元のセッションの下に入れ子になります。その行にはブランチの記号と、「3 コミット」のような状態行が加わります。状態行は次のものを数えます。
- 分岐元のブランチより進んでいるコミット(「1 コミット」「n コミット」)
- 未コミットのファイル(「未コミット n ファイル」)
- 遅れているコミット(「n 件遅れ」)
最初の変更があるまでは「まだ変更なし」と表示されます。カウントはマシンが動いている間、およそ 20 秒ごとにマシンから読まれます。
セッションヘッダーのフォルダの隣には、ブランチ名と同じカウントを示すチップが出ます。カーソルを合わせると「親 から出た専用の git ブランチ — 用意ができたらマージし戻してください」と読めます。
マージする
ブランチに変更が入ると、ヘッダーに分割ボタン 親 にマージ が出ます。
主要部分をクリックすると、ブランチを分岐元へマージします。そのあとチェックアウトとブランチが取り除かれ、セッションはアーカイブされます。セッションは読めるまま残り、状態行は「親 にマージ済み」になります。
矢印の部分を押すと他の選択肢が開きます。これらはセッションの ⋯ メニューと右クリックメニューのブランチセクションにもあります。
| 項目 | 何をするか |
|---|---|
| 変更を確認 | レビューウィンドウを開きます。 |
| 親 にマージ | ボタンと同じです(メニューのみ)。 |
| スカッシュして 親 にマージ | ブランチ全体を 1 つのコミットとして落とし(「ブランチ をスカッシュマージ」)、そのあとチェックアウトを取り除きます。 |
| マージしてブランチで作業を続ける | マージしますが、チェックアウト・ブランチ・セッションを残すので、エージェントは作業を続けられます。 |
| プルリクエストを作成 | 残っているものをコミットし、ブランチをプッシュして、親ブランチに対して gh pr create でプルリクエストを作るようエージェントに依頼します。エージェントは URL を返します。これにはマシン上の GitHub 認証情報が必要です。認証情報を参照してください。 |
| ここでターミナルを開く | ブランチのチェックアウト内の Linux ターミナル。 |
| ブランチを破棄… | 確認のあと、チェックアウト・ブランチ・セッションを削除します。 |
マージはこう進みます。
- きれいなブランチはすぐマージされます。 実行中、ヘッダーには「親 にマージ中…」と出ます。
- 未コミットの作業や競合はエージェントに渡されます。 ブランチに未コミットのファイルがある場合、またはマージが競合した場合、Bromure はマージを巻き戻してすべてをきれいな状態に戻します。そのうえで、そのセッション自身のエージェントに会話の中で、作業をコミットし、マージし、競合があれば解決するよう依頼します。ヘッダーは「親 にマージ中 — エージェントが仕上げています」と表示し、チャットで経過を追えます。マシン上で git に身元が設定されていない場合、マージコミットは
Bromure <bromure@localhost>として作られます。 - Bromure はマージが着地したことを確かめてから、何かを取り除きます。30 分たっても着地しない場合、状態はマージが停止していますになります:「30 分たってもマージが着地していません — エージェントに状況を尋ねてください。」ボタンはマージを再試行になります。
終了時に進行中だったマージは、次回の起動時に再開されます。
エージェントがマージを求めるとき
エージェントは worktree_merge ツールでブランチのマージを求められます。自分のブランチについて、あるいは自分のセッションから始まったブランチについて求められます。自分でマージすることは決してありません。セッションのヘッダーの下にバナーが現れます:「エージェント が ブランチ を 対象 にマージすることを求めています」。その下の行には、ブランチのカウント、エージェントがスカッシュを求めた場合は「1 つのスカッシュコミットとして」、そして「着地したらチェックアウトは取り除かれます。」が出ます。
- 変更を確認でレビューウィンドウが開きます。
- 後でで断ります。あなたが持ち出さない限り再度尋ねないよう、エージェントに伝えられます。
- マージ(またはスカッシュしてマージ)で、上記のとおりマージが走ります。着地すると、求めたエージェントに知らされます。
ブランチセッションのアーカイブと削除
作業がマージされていないブランチセッションをアーカイブまたは削除しようとすると、ブランチをどうするか尋ねられます:「「セッション」をアーカイブしますか — ブランチも?」または「「セッション」を削除しますか — ブランチも?」。
- ブランチを保持は、チェックアウトとブランチをマシンに残します。あとでマージしたり引き継いだりできます。マシンは起動時にそれを開き直さなくなります。セッションを再開するとまた開きます。
- ブランチを破棄は、セッションとともにチェックアウトとブランチを削除します。「ブランチ にはマージされていない作業があります(…)」が、失うものを教えてくれます。
ブランチで何も行われていない場合(「ブランチ ではまだ何も行われていないので、取り除いても失うものはありません。」)、ブランチを破棄が既定になります。
**ブランチを破棄…**で明示的に破棄する場合は、必ず先に確認されます:「「セッション」を破棄しますか? ブランチ ブランチ とそのチェックアウトがセッションとともに削除されます。これは取り消せません。」
マシン上のブランチ
セッションがアーカイブされ、マージされ、あるいは消えてしまうと、ブランチは見失いやすくなります。**このマシンのブランチ…**は、Bromure がそのマシン上に作ったすべてのブランチを一覧するウィンドウを開きます。セッションヘッダーの ⋯ メニュー、およびヘッダーのマシンのカプセルを右クリックしたときに見つかります。
「マシン のブランチ」というタイトルのウィンドウは、「n 件のブランチ · n 件が置き去り」と数えます。各行には次のものが出ます。
- ブランチ名と、誰のものか:セッションあり、セッションは一時停止中、セッションはアーカイブ済み、マージ済み、セッションなし
- ブランチ、矢印、マージ先のブランチ
- 何を抱えているか、そして最後のコミットの時期
- マシン上のチェックアウトのパス
行の操作は、そのブランチの持ち主によって変わります。
- セッションのあるブランチには確認とセッションを表示。
- セッションのないブランチにはセッションで開く。これはブランチのチェックアウトでマシンの既定のエージェントを起動します。新しいセッションは完全なブランチセッションなので、マージ・レビュー・破棄のすべてが使えます。
- ゴミ箱ボタン「ブランチとそのチェックアウトを破棄」は、先に確認します。ブランチにアーカイブ済みのセッションがある場合、そのセッションも削除されます。
セッションなしのみで、一覧を置き去りのブランチだけに絞れます。⌘R で更新します。ブランチはマシンからライブで読まれるため、マシンが動いている必要があります:「ブランチはマシンからライブで読まれます — 起動して更新してください。」
レビューウィンドウ
レビューウィンドウは、セッションの変更を差分として表示し、それにコメントできるようにします。ブランチ専用ではありません。開く方法は 3 つあります。
- 変更を確認。セッションの ⋯ メニュー、ブランチメニュー、⌘K パレット、またはマージ依頼のバナーから。
- チャットのエージェントの返信の下にある**… ファイル変更**の行。この場合、そのターンで変更されたファイルだけでウィンドウが開きます(「このターンで変更」)。すべて表示で全体を、このターンで再び絞り込めます。
- ブランチウィンドウの確認。
ウィンドウのタイトルは「レビュー — セッション」です。その構成は次のとおりです。
- 比較の選択(「変更を何と比べるか」):
- 親 からはブランチセッションだけにあり、その既定です。親が持たずブランチが持つすべてを表示します。
- 未コミットは、まだコミットされていない変更を表示します。他のセッションの既定です。
- 直前のコミットは、最も新しいコミットを表示します。
- ファイル一覧は、変更されたファイル数、進捗バー付きの「n / n 件確認済み」、そしてブランチのコミットを表示します。git がまだ追跡していない新規ファイルも含まれ、数えられます(「git にまだ追加されていない新規ファイル n 件」)。ファイルをクリックするとそこへ飛べます。
- 確認済みにする。 各ファイルの隣の丸をクリックすると、見たものとして印が付き、折りたたまれます。この印はそのファイルの現在の差分に結び付いているので、ファイルが再び変わると印も戻ります。
- 差分。 行にカーソルを合わせるとコメントできます。ファイル単位(「このファイルへのコメント」)や、下のフィールドで変更全体にもコメントできます。
- ヘッダーには更新ボタン(⌘R)とターミナルを開くがあり、ブランチセッションではマージボタンも付きます。
コメント
追加したコメント(⏎)は下書きです:「送るまで他のものと一緒に待ちます」。⌥⏎ で改行します。× で下書きを削除します。
コメント n 件をエージェントに送信(⇧⌘⏎)は、すべての下書きを 1 つの番号付きメッセージとしてセッションのエージェントに送り、各コメントにファイルと行を添えて、対応するよう依頼します。エージェントが動いていなければ、そのメッセージが再開させます。送信済みのコメントは「送信済み」と印が付いてウィンドウに残ります。コメントと確認済みの印はセッションとともに保存され、ウィンドウを閉じても残ります。
変更はマシンからライブで読まれます。マシンが停止していると、ウィンドウは「マシンに到達できません」と表示します。マシンを起動して更新してください。
注: コーディングタスクは同じレビューウィンドウを使い、コメント n 件を付けて差し戻すのようなタスク専用のボタンが付きます。
マシンのターミナル
マシンの Linux ターミナルのタブには、以前からの worktree 操作が残っています:ワークスペースメニューの新規ワークツリー(⇧⌘G)、ワークツリーをマージ(⇧⌘M)、ターミナルをアタッチです。マシンを参照してください。エージェントのセッションでは、上記のブランチ操作がこれらに代わります。
ミラーしたサーバーと iOS で
ブランチセッション、マージ、マージ依頼のバナー、レビューウィンドウ、ブランチウィンドウは、別の Mac をミラーするファットクライアントのウィンドウでもすべて使えます。iPhone と iPad のクライアントでは、セッションの長押しメニューに**新規ワークツリー…**があり、同じブランチのシートが開きます。ブランチメニューが出る場所では、ブランチを破棄…が確認ダイアログの代わりに破棄する — これは取り消せませんというサブメニューを開きます。