在Git中,如何在同一个分支(例如master)上的两个不同提交(不是连续的)之间比较相同的文件?

我正在寻找一个类似于Visual SourceSafe (VSS)或Team Foundation Server (TFS)中的比较功能。 在Git中可以吗?


当前回答

如果你想在Windows上进行简单的可视化比较,比如你可以在visual SourceSafe或Team Foundation Server (TFS)中获得,试试这个:

在文件资源管理器中右键单击该文件 选择“Git历史记录”

注意:升级到Windows 10后,我失去了Git上下文菜单选项。但是,您可以在命令窗口中使用'gitk'或'gitk filename'来实现相同的功能。

一旦你调用'Git History', Git GUI工具将启动,文件的历史记录在左上方窗格中。选择一个您想要比较的版本。然后右键单击第二个版本并选择其中之一

Diff this ->被选中

or

Diff selected -> this

颜色编码的差异将出现在左下角的窗格中。

其他回答

其他的回答都比较完整,给它们点赞吧。 这只是为了记住,您可以避免知道最近提交的id。通常,我将自己设置在我想要比较的分支中,并运行diff工具,知道旧的提交uid(你可以使用其他符号):

git checkout master
git difftool 6f8bba my/file/relative/path.py

另外,检查这里的其他响应来设置你想要git打开的工具来比较文件: 使用.gitconfig配置diff工具 要了解更多关于difftool的知识,请访问difftool文档

来自git-diff manpage:

git diff [--options] <commit> <commit> [--] [<path>...]

例如,要查看文件“main.c”在现在和两次提交之间的区别,这里有三个等效的命令:

$ git diff HEAD^^ HEAD main.c
$ git diff HEAD^^..HEAD -- main.c
$ git diff HEAD~2 HEAD -- main.c

如果希望在每次提交的基础上查看两次提交之间对文件的所有更改,也可以这样做

Git log -u $start_commit..$end_commit——path/to/file

如果你想在Windows上进行简单的可视化比较,比如你可以在visual SourceSafe或Team Foundation Server (TFS)中获得,试试这个:

在文件资源管理器中右键单击该文件 选择“Git历史记录”

注意:升级到Windows 10后,我失去了Git上下文菜单选项。但是,您可以在命令窗口中使用'gitk'或'gitk filename'来实现相同的功能。

一旦你调用'Git History', Git GUI工具将启动,文件的历史记录在左上方窗格中。选择一个您想要比较的版本。然后右键单击第二个版本并选择其中之一

Diff this ->被选中

or

Diff selected -> this

颜色编码的差异将出现在左下角的窗格中。

你也可以比较两个不同版本的文件,如下所示:

Git diff <revision_1>:<file_1> <revision_2>:<file_2>