2016-05-24 17 views
1

どうすればいいですか? git configで変更を行った後、私はvimdiffで私の段階的かつコミットされた変更とは違うかもしれませんが、私が行うと、私はまだ古いプレーンスタイルのdiffを参照します。git showgit showでもこの作業を行うにはどうすればよいですか?vimdiffを使ってgit showでdiffを表示するには

+0

可能な複製http://stackoverflow.com/questions/28048270/how-do-i-use-vim-as-git-show-editor – anujm

答えて

1

git showとすると、コミット(see the man page for reference)のようなオブジェクトを表示できます。つまり、2つのファイルの差分を表示するのではなく、(おそらく複数の)ファイルの変更を表示します。したがって、比較できる2つのファイルはありません。しかし、それはまさにvimdiffがすることです、それは2つのファイルを並べて開き、違いを強調します。
git difftoolなどを使用すると、diffの両側にファイルが作成され、ツール(あなたの場合はvimdiff)を使用して比較されます。 git showはそれらのファイルを作成しないので、出力をvimdiffで表示することはできません。

tl; dr:git showは、差分を作成するのではなく、gitオブジェクトを表示するツールであるため、vimdiffを使用してdiffとして表示することはできません。

git difftoolを使用することをお勧めします。変更されたファイルごとにgvimdiffが開きます。
普通のオプションgit diffを使用して、さまざまなコミットを比較できます。

1

パラメータがないデフォルトのgit showgit show <object>は、コミット内のすべてのファイルに変更を表示します。 vimdiffは一度に1つのファイルしか比較できないため、これらのオプションでは使用できません。

しかし、git show <object> -- <file>は、コミット内の1つのファイルに対する変更を示しています。代わりにdifftoolを実行してはvimdiffの変化を表示することができます。

git difftool SHA~:SHA -- <file> 

あなたはより多くの柔軟性が必要な場合は、常にファイルの特定のバージョンを取得するためにgit showを使用してはvimdiffにそれらを渡すことができ​​

export FILE=path/to/file; vimdiff <(git show SHA1:$FILE) <(git show SHA2:$FILE) 
0
経由

gitエイリアスを使用してみてください。これはgit show

git config --global alias.s difftool\ HEAD^\ HEAD 

のためのものであり、これはthis pageに慣れ、それがどのように動作するかを確認するにはgit show <revision>

ため
git config --global alias.s '!f() { rev=${1-HEAD}; git difftool $rev^ $rev; }; f' 

です。

関連する問題