233

「 GitDiffwithVimdiffgit diff 」をガイドとして使用して、vimdiffにラップするように設定しましたが、変更されたファイルが多数ない限り、期待どおりに機能しています。

変更が加えられたファイルが複数あり、を実行するとgit diff、最初のファイルが開き、vimdiffの最初のインスタンスを終了した後、次のメッセージが表示されます。

external diff died, stopping at filename

これは、私が慣れているものとはまったく異なる動作です。私は過去にSVNで同様の設定をしていましたが、複数のファイルと比較する場合は、最初のファイルを確認してから、書き込みを終了して使用を終了する:wqと、違いのある次のファイルが開きます。

これはGitには当てはまりません。試し:n[ext]ましたが、左側のウィンドウが元のファイルで埋められないため、変更されたバージョンと比較できます。

4

5 に答える 5

370
git config --global diff.tool vimdiff
git config --global difftool.prompt false

入力git difftoolすると、期待される動作が得られます。

ナビゲーションコマンド、

  • :qavimで、何も保存せずにチェンジセット内の次のファイルに移動します。

エイリアシング(例)

git config --global alias.d difftool

..入力git dしてvimdiffを呼び出すことができます。

高度なユースケース、

  • デフォルトでは、gitは-Rオプションを指定してvimdiffを呼び出します。git config --global difftool.vimdiff.cmd'vimdiff "$ LOCAL""$REMOTE"'でオーバーライドできます。これにより、vimdiffが書き込み可能モードで開き、差分中に編集できるようになります。
  • :wqvimで、変更が保存されたチェンジセット内の次のファイルに移動します。
于 2010-09-15T00:27:18.953 に答える
108

あなたは試すことができますgit difftool、それはこのようなことをするように設計されています。

まず、diffツールをvimdiffに設定する必要があります

git config diff.tool vimdiff

次に、差分を作成する場合は、git difftoolの代わりにを使用しgit diffます。期待どおりに動作します。

于 2010-09-15T00:08:00.670 に答える
22
Git accepts kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,
and opendiff as valid diff tools. You can also set up a custom tool. 

git config --global diff.tool vimdiff
git config --global diff.tool kdiff3
git config --global diff.tool meld
git config --global diff.tool xxdiff
git config --global diff.tool emerge
git config --global diff.tool gvimdiff
git config --global diff.tool ecmerge
于 2013-07-09T06:05:18.027 に答える
5

gitにリストされていない別のdiffツールを使用したい場合は、と言ってnvimください。これが私が使用することになったものです:

git config --global alias.d difftool -x <tool name>

私の場合、diffコマンドを設定<tool name>して呼び出します。nvim -d

git d <file>
于 2020-04-19T04:11:54.377 に答える
3

を永続的に使用する場合vimdiffは、次のファイルgit diffを設定できます。~/.gitconfig

git config --global diff.tool vimdiff

git difftool次に、diffに使用できます。

一時的にのみ使用するvimdiff場合は、毎回コマンドを実行できます。

git difftool --tool=vimdiff
于 2021-05-13T11:24:59.997 に答える