首先,实际上回答最初的需求:“我正在寻找工作树和上次提交之间的差异”
你必须简单地
git diff HEAD
(HEAD
对于大多数命令来说都是隐含的,但是diff
这里有点不同,是的git diff
不同于git diff HEAD
)
现在,之间的区别HEAD
and HEAD~
很简单:
HEAD
是 git 用来表示当前正在处理的状态的指针,通常是一个分支。 (参见glossary https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefHEADaHEAD)
~
表示指定的提交parent. So HEAD~
意思是“不是最后一次提交,而是之前的一次”
有了这样一棵树:
---> time direction this way --->
A---B---C <<< master <<< HEAD
HEAD
将决心承诺C
, while HEAD~
将决心B
编辑以澄清HEAD^
HEAD^
and HEAD~
两者都指向(如果我们坚持我们的例子)B
,但它不应该误导您认为它们是相同的。
<someCommit>^N
(where N=1
如果没有明确给出)表示指定的提交第 N 个父级当所述提交有多个父项时。对于经典的两个父母合并,如果HEAD
指向合并提交,可以找到父项HEAD^
and HEAD^2
.
<someCommit>~N
(again, N
另一方面,默认为 1) 意味着第N代祖先所说的提交,意味着你回到过去的 N 个提交,每次只跟随一个父提交。为了更清楚起见,在我们的示例中,HEAD~2
将指定A