zshell

Git パネル

変更を作成したシェルの隣で、ステージ、レビュー、コミット、プッシュを行います。

Cmd+Shift+G を押します。プロジェクトの基準となるリポジトリでパネルが開きます。 選び方はプロジェクトディレクトリを参照してください。

ここでの操作は、Zshell が代わりに実行する Git コマンドです。「完了」以上の情報がある場合は出力を表示します。 要求しない限り、履歴の書き換え、スカッシュ、強制プッシュは行いません。

Git ツールバー

アクティブなタブの下にコンパクトなツールバーを表示できます。リポジトリ内では現在のブランチと追加・削除行数の合計を表示し、変更がない場合は緑の変更なし(Clean)状態になります。未追跡ファイルも追加行数に含みます。

  • ブランチをクリックするとローカルブランチの検索・切り替えができます。リポジトリのデフォルトブランチには印が付きます。
  • 変更行数をクリックすると Git パネルが開きます。
  • リポジトリ外で常に表示(Always Show)を使うと、Git リポジトリなし(No Git Repository)ボタンが残り、初期化画面を開けます。

設定 → 一般で非表示(Hide)・自動(Auto)・常に表示を選ぶか、toolbar.visibility を設定します。標準は非表示です。 表示中のツールバーはコンテキストメニューからも非表示にできます。

変更されたファイル

ファイルは競合、ステージ済み、未ステージに分かれます。行にポインタを置いてボタンを表示するか、コンテキストメニューを使います。

ボタン動作
+ファイルをステージ
−ステージから外す
↺変更を破棄

パネルヘッダーのすべての変更を破棄(Discard All Changes)は先に確認します。ここでの操作のうち、別の Git コマンドでは取り消せない操作です。

競合ファイルには通常のステージボタンの代わりに解決済みにする(ステージ)(Mark Resolved (Stage))を表示し、意図して解決を確定する手順にしています。

ヘッダーのじょうごボタンはファイル名で一覧を絞り込み、大量の変更から目的のファイルを探せます。

差分を読む

変更ファイルをクリックすると、ターミナルに重ねず隣のペインに差分を開きます。コンテキストメニューのファイルを開く(Open File)は編集可能なファイル自体を開き、ファイルを横に開く(Open File to the Side)も選べます。

大きな差分も応答性を保ちます。1,000 ファイルの変更でも 1 行の変更と同じように素早く開き、滑らかにスクロールできます。

差分の上にある操作は、次の 2 つの選択を全体の設定として記憶します。

  • 統合/分割(Unified / Split) — 1 列と左右並列の表示を切り替えます。
  • 確認/編集(Review / Edit) — 現在のワークツリーの未ステージファイルに表示されます。変更後の側を直接編集し、Cmd+S で保存します。未保存ファイルを閉じる際の扱いは通常のエディタと同じです。

ステージ済みや過去のコミットの差分は、Zshell が安全に書き込めるファイルではなくスナップショットなので、読み取り専用です。 ある差分を編集・分割表示へ切り替えると、ほかの開いている差分にも設定が反映されますが、編集できない差分が編集可能になることはありません。

コミット

メッセージを入力しコミットボタンを使うか、そのメニューから選択します。

  • ステージ済みをコミット(Commit Staged) — ステージした内容だけをコミット
  • すべてステージしてコミット(Stage All & Commit) — 追跡済みの変更をすべてステージしてコミット
  • 直前のコミットを修正(Amend Last Commit) — ステージ済みの変更を直前のコミットへ追加
  • すべてステージして修正(Stage All & Amend)

下には最近のコミットを表示します。コンテキストメニューからコミットハッシュをコピー(Copy Commit Hash)、コミットメッセージをコピー(Copy Commit Message)が使えます。

ブランチ

ヘッダーのブランチ名はメニューです。別のブランチを選んで切り替えるか、新規ブランチを作成…(Create New Branch…)で現在位置から作成できます。

ワークツリー

Git パネルにはリポジトリに属する全ワークツリーを、ブランチ名とチェックアウトのパス付きで表示します。使用中のチェックアウトには現在(Current)と表示します。 ワークツリーをクリックすると、そのディレクトリの新しいターミナルタブを開きます。同じプロジェクトのまま、チェックアウトごとのシェルの文脈を維持できます。 長い一覧は専用の範囲内でスクロールし、セクションヘッダー、コミット操作、変更ファイル一覧はその場に残ります。ヘッダーをクリックして折りたたみ・展開できます。

Detached HEAD のワークツリーはブランチ名の代わりに Detached HEAD と表示します。 ベアリポジトリも一覧には含まれますが、作業ディレクトリがないためターミナルタブでは開けません。

ワークツリーのセッション

ローカル Git リポジトリのターミナルで ターミナル → ワークツリーで新しいセッション… を選ぶか、Cmd+Opt+T を押します。タブと + ボタンのコンテキストメニューからも実行できます。新規または既存のローカルブランチと、まだ存在しないディレクトリを選んでください。新しいブランチはリポジトリのデフォルトブランチから作成され、現在の HEAD も明示的に選べます。既存のブランチは現在のコミットを保持します。推奨ディレクトリは元のチェックアウトの隣にあります。

分割したペインはセッションのワークツリーとの関連を継承し、保存したレイアウトからも復元されます。関連するセッションを閉じる際は ワークツリーを保持、ワークツリーを削除、キャンセル を選べます。変更済み・未追跡・無視されたファイル、記録した基準に未統合のコミット、ロック、または使用中の別セッションがある場合は削除できません。Git ブランチは常に保持されます。

外部ターミナルでは zshell +session でセッションを作成・終了できます。projects が返す ID を --project に指定してください。Zshell 内では呼び出し元のプロジェクトが自動的に使われます。作成はバックグラウンドで行われ、--focus で新しいセッションに移動します。--base HEAD または --base REF で別の基準、--worktree NEW_DIR でディレクトリを指定できます。必要に応じて --connection FILE で実行中のインスタンスを選びます。終了時は明示的な --remove-worktree がなければワークツリーを保持し、check で現在の削除可否を確認できます。

zshell +session projects
zshell +session new --project PROJECT_ID --cwd /path/to/repo --branch feat/task
zshell +session list --project PROJECT_ID
zshell +session check --project PROJECT_ID --session SESSION_ID
zshell +session close --project PROJECT_ID --session SESSION_ID --remove-worktree

リモート

⋯ メニューにリモートとの通信操作をまとめています。

操作動作
フェッチ(Fetch)リモート追跡参照を更新
プル(早送りのみ)(Pull (Fast-forward Only))マージコミットを作らずにプル
プッシュ(Push)現在のブランチを送信
ブランチを公開(Publish Branch)上流がないブランチを送信。リモートが複数なら選択
変更を同期(Sync Changes)早送りプル後にプッシュ
すべての変更をスタッシュ(Stash All Changes)未追跡ファイルを含めて一時保存
スタッシュを適用して削除(Pop Stash)最新のスタッシュを復元

ブランチの隣のバッジは、上流に対する ↓ 遅れと ↑ 進みを示します。

同じメニューには変更パスをコピー(Copy Changed Paths)、リポジトリパスをコピー(Copy Repository Path)、Finder にリポジトリを表示(Reveal Repository in Finder)もあります。

プルを早送りのみにしているのは意図的です。実際のマージやリベースが必要なら Git が知らせるので、ターミナルで判断してください。パネルが代わりに方法を選ぶことはありません。

まだリポジトリでない場合

プロジェクトディレクトリにリポジトリがなければ、リポジトリを初期化(Initialize Repository)を表示します。実行するとそのフォルダで git init を行います。それまでは余計な操作をしません。

エージェントのターンをレビュー

Git パネルの**変更をレビュー…**で専用ウィンドウを開きます。

  • 直近のターンは、選択したエージェントの開始時と終了時のスナップショットを比較します。期間中の全編集を作成者に関係なく含みます。
  • 未コミットは HEAD と現在の作業ツリーを、ステージ済み・未追跡ファイルも含めて比較します。
  • ブランチ全体は、選択した比較元ブランチとの共通祖先から現在の作業ツリーまで、コミットと未コミットの変更を比較します。

ファイルと変更ブロックを選びます。直近のターンの変更ブロックを保持はレビューを記録し、変更ブロックを戻すは作業ツリーを変更します。Git インデックスは変更されず、元のスナップショットと判断は残ります。

後からファイルや HEAD が変わった場合、安全でないパス、実行中のエージェント、重複するターンでは復元を拒否します。バイナリと権限のみの変更は読み取り専用です。5 MiB 超のファイルは対象外です。変更パス 2,048 件、取得内容 25 MiB、または取得時間の上限を超えるスナップショットは利用できません。

スナップショットは現在のアプリセッション中のみ保持します。正確な開始・完了イベントが必要です。Pi、OpenCode、Grok はネイティブ統合に対応します。保護されたプロンプトは開始を取得しますが、完了イベントも必要です。イベントがなければ完了スナップショットなしと表示します。