Git

English

ForgeKairos は、履歴を編集する操作を持つコミットグラフ、マージリクエストのブランチを組む箱、操作のガイド、 古い git への対応を足す。Zed の Git パネルは Zed の Git の文書 を見る。

Git メニュー

メニューバーに Git メニューがある: コミットグラフを開く、ブランチを作成…、ブランチを切り替え…、 直前のコミットを修正 (amend)、今の変更を昔のコミットに入れる (fixup)…、MR を作る、2 つのブランチを比較…、 フェッチ、プル、プッシュ、強制プッシュ (lease 付き)…、stash…、Git の操作ガイド。

コミットグラフ

グラフには HEAD、ローカルとリモートのブランチ、タグのチップを出す。すべてのブランチ・現在のブランチ・ 選んだブランチの表示を切り替え、検索できる一覧からタグを選び、Shift か Ctrl で複数のコミットを選べる。 コミットの詳細には、その前の最新のタグを出す。

コミットの右クリックでできること:

  • そこからブランチを作る (切り替えるか、作るだけか)
  • チェックアウトする (detached HEAD)
  • タグを付ける
  • 現在のブランチへ cherry-pick する、revert する
  • メッセージを書き直す
  • そこへ reset する: soft、mixed、hard (hard は確認する)
  • そのコミットを捨てる

使えない操作は灰色にして理由を出す。

履歴の書き換え

  • amend: Git パネルのコミットの欄に「直前のコミットを修正 (amend)」のチェックがある。そのコミットをプッシュ 済みなら警告する。
  • fixup: 今の変更 (ステージしたものだけ、またはすべて) を以前のコミットに入れる。できないときは始める 前に断る: rebase やマージの途中、衝突がある、detached HEAD、現在のブランチの外のコミット、範囲にマージが ある、など。成功の知らせから 元に戻す… ができる。
  • squash・並べ替え・削除: コミットの一覧のダイアログで、残す・squash・捨てる・書き直すを選び、行の ドラッグで並べ替える。
  • 強制プッシュ: 書き換えの後の強制プッシュは「リース付き」だけを、コミットがプッシュ済みのときだけ出す。 強制プッシュは常に確認する。

書き換えの前に、無視しているローカルのファイル (.env など) が上書きされるなら始めない。衝突で止まった 書き換えは、続行・スキップ・中止のバナーを出す。

ドラッグ・アンド・ドロップ

  • Git パネルのファイルを「ステージ済み」か「未ステージ」の節へドラッグして、ステージ・ステージ解除する。
  • ファイルをグラフのコミットへドラッグして、そのコミットへ fixup する。
  • コミットを別のコミットへドラッグして並べ替える。
  • コミットを HEAD のチップへドラッグして cherry-pick する。
  • HEAD のチップをコミットへドラッグして、そこへ reset する (soft、mixed、hard)。

マージリクエストの箱

マージリクエストを作成 (Git メニューでは「MR を作る」) で、グラフの横に箱を開く。開発のブランチと基点を選び、コミットを箱へドラッグし、 メッセージとブランチ名 (既定は mr/<ブランチ>) を書いてブランチを作る。今のブランチはチェックアウトした ままである。

作った後、結果を比べてファイルごとに分類する (一致、除外したコミットによる変更、入れ忘れの疑い (関係する コミット付き) など)。マージリクエストのブランチが最新の基点に乗っていなければ警告する。まだ箱に入れていない コミットはグラフに印を付け、順に辿れる。

2 つの ref の比較

2 つのブランチを比較… で、2 つの ref の間で変わったファイルと読み取り専用の差分のタブを開く。

検索

グラフの検索は author:、tag:、branch:、path:、file:、since:、after:、until:、before:、 change:、merge:、sha: を受け付け、AND で組み合わせる。日本語の書き方 (著者:、タグ:、ブランチ:、 ファイル:、以降:、以前:、変更:、マージ:) と全角のコロンも使える。

画面の中の説明

  • グラフのツールバー、Git パネルの見出し、マージリクエストの箱の ? (git: show guide) で Git ガイドを 開く: amend、fixup、書き直し、squash、cherry-pick、マージリクエスト、ブランチ、元に戻す方法、reset の 種類、比較、タグ、検索。
  • ボタンの行の下の 1 行に、マウスの下のボタンの説明を出す。メニューは各項目の横に短い説明を出し、使えない 項目は理由を、破壊的な項目は注意を出す。

そのほかの操作

Git パネルとコマンドパレットに次の操作がある: リポジトリの初期化、リモートの追加と削除、ブランチのマージ、 ローカルのブランチをリモートに合わせる (確認する)、作業ツリー・ステージした変更・直前のコミットからの パッチの作成、パッチの適用。

大量の ref

数万のタグやブランチがあっても、ステージとコミットは遅くならない。loose な ref が 1,000 以上あると、 まとめる (pack) ことを勧めるバナーを出す。

古い git

Git の連携は古い git (古い Linux のサーバーなど) でも動く。入っている git より新しい版が要る機能は、必要な版を 示して断る。信頼していないプロジェクトで git が 2.12 より古いときは、フックを実行する操作とプッシュ・プル・ フェッチを断る。git status が失敗したときは、Git パネルにバナーでエラーを出す。