在 Git 中,我如何比较同一分支(例如 master)上两个不同提交(不连续)之间的相同文件?
我正在搜索Visual SourceSafe (VSS)或Team Foundation Server (TFS)中的比较功能。 Git 有可能吗?
从git-diff
页:
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 diff < <em>revision_1</em> >:< <em>file_1</em> > < <em>revision_2</em> >:< <em>file_2</em> >
如果您已配置 “difftool”,则可以使用
git difftool revision_1:file_1 revision_2:file_2
示例:将文件从其上次提交与先前在同一分支上的提交进行比较:假设您处于项目根文件夹中
$git difftool HEAD:src/main/java/com.xyz.test/MyApp.java HEAD^:src/main/java/com.xyz.test/MyApp.java
您应该在〜/ .gitconfig 或 project / .git / config 文件中包含以下条目。安装 p4merge [这是我首选的差异和合并工具]
[merge]
tool = p4merge
keepBackup = false
[diff]
tool = p4merge
keepBackup = false
[difftool "p4merge"]
path = C:/Program Files (x86)/Perforce/p4merge.exe
[mergetool]
keepBackup = false
[difftool]
keepBackup = false
[mergetool "p4merge"]
path = C:/Program Files (x86)/Perforce/p4merge.exe
cmd = p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"