我该怎么做?通过使用git config
进行更改后,我可以使用vimdiff查看我的暂存和已提交的更改的差异,但是当我执行git show
时,我仍然看到旧的普通样式差异。我如何使其在git show
中也生效?
尝试使用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'
想要了解它的工作原理,请熟悉此页面。
以下方法适用于我:
git difftool SHA^..SHA -- <file>
git difftool 0f27151b7^..0f27151b7 src/main.c
。 - Chan Kim默认情况下,git show
命令不带参数以及git show <object>
命令会显示提交中所有文件的更改。由于vimdiff只能比较单个文件,因此您无法在使用这些选项时使用它。
但是,git show <object> -- <file>
命令会显示提交中单个文件的更改。您可以通过运行difftool
命令来在vimdiff中显示更改:
git difftool SHA~:SHA -- <file>
git show
来获取特定版本的文件,并通过Process Substitution将它们传递给vimdiff。export FILE=path/to/file; vimdiff <(git show SHA1:$FILE) <(git show SHA2:$FILE)
git show
命令可以显示对象,如提交记录(有关详细信息,请参阅手册)。因此,您不会显示两个文件的差异,而是显示一个或多个文件的更改。因此,并没有可以进行比较的两个文件。但这正是vimdiff所做的,它会并排打开两个文件并突出显示差异。git difftool
或类似工具时,它将为差异的两侧创建文件,并使用该工具(在您的情况下为vimdiff)进行比较。 git show
不会创建这些文件,因此无法使用vimdiff显示其输出。
简而言之:git show
是一种显示git对象而不是创建差异的工具,因此无法使用vimdiff显示其输出作为差异。
您可能想要使用git difftool
。它将为每个修改的文件打开gvimdiff。
您可以使用git diff
的常规选项来比较不同的提交。