如何在不提供确切的提交哈希版本的情况下比较两个提交?

q09*_*987 1 git git-diff

/sf/answers/233670181/

我已尝试以下所有方法来查询更改给定文件的最后两次提交之间的差异(不仅仅是最近的两次提交,而是具有特定效果的两个特定提交)。不幸的是,没有一个对我有用。

git版本1.8.3.1

$ git diff HEAD^^ HEAD main.c
$ git diff HEAD^^..HEAD -- main.c
$ git diff HEAD~2 HEAD -- main.c
Run Code Online (Sandbox Code Playgroud)

唯一有效的方法是提供两个提交哈希版本。

问题> 你知道为什么我不能用上面的 HEAD 来比较吗?

这是我尝试过的:

$ git lg1 abc.xml |head -n 3
* 3f13aa1 - (3 hours ago) test 2 - guest
* d59d3bc - (8 months ago) test 1 - guest
* 3a19f36 - (1 year, 2 months ago) test 0 - guest

$ git diff d59d3bc..3f13aa1 abc.xml
diff --git a/abc.xml b/abc.xml
index 5db0595..2790562 100644
--- a/abc.xml
+++ b/abc.xml
@@ -40,6 +40,12 @@
     Hello
+    World

$ git diff HEAD~2 HEAD~1 abc.xml
$ git diff HEAD^^ HEAD abc.xml
$ git diff HEAD^^..HEAD abc.xml
$ git diff HEAD~..HEAD abc.xml
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 5

HEAD不是文件的最后一次提交 - 它是当前签出的分支中的最后一次提交。如果最后几次提交没有影响相关文件,则 usingHEAD确实会返回空输出。

如果您想查看最新提交对文件做了什么,使用-p标志git log可能会更容易:

git log -n1 -p abc.xml
Run Code Online (Sandbox Code Playgroud)