协慌网

登录 贡献 社区

如何在同一分支上的两个不同提交之间区分相同的文件?

在 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\"