ブランチと手術

外部の差分ツールとマージツール

Gitcito の 差分ビューア と 3 ペインのリゾルバ は、たいて いの日をこなします。こなせない日もあります。4,000 行の生成ファイル、4 列を同時に見たい マージ、あるいは単純に、10 年使ってきてどんな新顔より速く読めるツールがある、という日 です。

設定 → 一般 → 外部の差分ツールとマージツール。

これは git の一覧であって、こちらの一覧ではありません

Gitcito は独自の表を持ちません。ドロップダウンの中身は git difftool --tool-help と git mergetool --tool-help です。だからこうなります。

  • git がすでにあなたのマシンで見つけたツールが先に並び、知ってはいるが見つからない ものは 未インストール の印を付けて後ろに並びます。

  • 独自のツールも、追加の対応なしに動きます。 次のように設定してあれば

    git config --global difftool.mine.cmd 'mycompare "$LOCAL" "$REMOTE"'
    

    mine は組み込みのものと同じようにドロップダウンに現れます。

  • 選択は グローバルの git 設定の diff.tool と merge.tool に書き込まれます。 ターミナルが読むのと同じキーです。ここで設定すればコマンドラインの git difftool も 同じように振る舞い、あちらで設定すれば Gitcito がそれを拾います。

git は最初からおよそ 30 種類のツールを知っています。Kaleidoscope、Beyond Compare、 Meld、KDiff3、P4Merge、Araxis、DiffMerge、WinMerge、FileMerge、VS Code、そして vim 系列などです。

アクションが現れる場所

場所 アクション
コミット作成欄 の変更されたファイル <tool> で差分を見る — 作業ツリーとインデックスの比較
コンフリクトリゾルバ <tool> でマージ — 完全な 3 方向マージ

どちらの項目も、ツールが実際に設定されているときにだけ現れます。設定されていない git difftool はただエラーになるだけで、反応しないボタンはボタンがないより悪いから です。

ツールが開いている間に起きること

Gitcito はツールが閉じるのを待ちます。これは意図したものです。git mergetool が 解決済みファイルをステージするのはツールが終了した あと なので、そうしないと報告 できる結果が存在しません。ボタンがすぐ戻らずスピナーを出すのはそのためです。

アプリのそれ以外は反応したままです。これらは通常の git 操作を直列化するリポジトリ 単位のロックの外側で走るので、昼休みの間ずっとマージツールを開いたままにしても、 その裏のタブが固まることはありません。

外部でのマージが成功すると、git 自身がファイルをステージし、Gitcito はリゾルバを閉じて 再読み込みします。保存せずにツールを閉じた場合、git がその旨を伝え、何も変わりません。

.orig ファイル

git mergetool は既定で、解決済みファイルの隣に <file>.orig というバックアップを 残します。これは Gitcito ではなく git の振る舞いです。設定のトグルは mergetool.keepBackup を書き込みます。オフにすれば、解決済みファイルは何も残しません。

制限

  • 作業ツリーの差分だけです。 コミット作成欄の項目は、いま手元にあるものと インデックスを比べます。過去の 2 つのコミットを外部ツールで比べる配線はありません。 それには組み込みの 差分ビューア か 比較 を使ってください。
  • 一度に 1 ファイルです。 「変更されたファイルすべてを差分にかける」一括処理は ありません。
  • Gitcito が何かをインストールすることはありません。 未インストール と印の付いた ツールも選択したままにできます。インストールすれば git が見つけるかもしれないから です。ただしそれまでは失敗します。

この翻訳を GitHub で改善