我该怎么做?在通过git config
进行更改之后,我可以使用vimdiff来区分我的分阶段和提交的更改但是当我git show
时,我仍然看到旧的简单风格的差异。我如何为git show
开展这项工作?
答案 0 :(得分:1)
使用git show
,您可以显示提交(see the man page for reference)等对象。因此,您不会显示两个文件的差异,但会更改(可能是多个)文件。所以没有两个文件可以比较。但这正是vimdiff所做的,它并排打开两个文件并突出显示差异
当你使用git difftool
之类的东西时,它会为diff的两边创建文件并使用工具(在你的情况下是vimdiff)来比较它们。 git show
不会创建这些文件,因此vimdiff无法显示其输出。
tl; dr:git show
是一个显示git对象的工具,而不是创建差异,所以它的输出不能用vimdiff显示为差异。
您可能想要做的是使用git difftool
。它将为每个修改过的文件打开gvimdiff
您可以使用git diff
的常用选项来比较不同的提交。
答案 1 :(得分:1)
没有参数的默认git show
以及git show <object>
显示提交中所有文件的更改。由于vimdiff一次只能比较一个文件,因此不能将它与这些选项一起使用。
但是git show <object> -- <file>
显示了对提交中单个文件的更改。您可以通过运行difftool
来显示vimdiff中的更改:
git difftool SHA~:SHA -- <file>
如果您需要更多灵活性,可以随时使用git show
获取文件的特定版本,并通过Process Substituion将其传递到vimdiff
export FILE=path/to/file; vimdiff <(git show SHA1:$FILE) <(git show SHA2:$FILE)
答案 2 :(得分:1)
尝试使用git别名。这适用于git show
git config --global alias.s difftool\ HEAD^\ HEAD
这适用于git show <revision>
git config --global alias.s '!f() { rev=${1-HEAD}; git difftool $rev^ $rev; }; f'
要了解其工作原理,请熟悉this page。
答案 3 :(得分:0)
以下对我有用的东西
git difftool SHA^..SHA -- <file>