我正在搜索工作树和上次提交之间的差异,并在 Stackoverflow 上发现了这个已接受的答案。
有人可以解释一下 HEAD 和 HEAD~ 实际上指的是什么吗,因为答案中没有解释,我无法从谷歌中弄清楚。:)
谢谢。
首先,实际上回答最初的需求:“我正在寻找工作树和上次提交之间的差异”
你必须简单地
git diff HEAD
Run Code Online (Sandbox Code Playgroud)
(HEAD对于大多数命令来说是隐含的,但diff这里有点不同,yesgit diff与 不同git diff HEAD)
HEAD现在,和之间的区别HEAD~非常简单:
HEAD是 git 用来表示当前正在处理的状态的指针,通常是一个分支。(参见术语表)
~表示指定提交的父提交。所以HEAD~意味着“不是最后一次提交,而是之前的一次”
有了这样一棵树:
---> time direction this way --->
A---B---C <<< master <<< HEAD
Run Code Online (Sandbox Code Playgroud)
HEAD将决心承诺C,同时HEAD~将决心B
编辑以澄清HEAD^
HEAD^两者HEAD~都指向(如果我们坚持我们的示例)B,但它不应该误导您认为它们是相同的。
<someCommit>^N(N=1如果没有明确给出)是指当指定提交有多个父级时,该提交的第 N 个父级。对于经典的两个父级合并,如果HEAD指向合并提交,则可以使用HEAD^和找到父级HEAD^2。
<someCommit>~N(同样,N默认为 1) 另一方面,表示所述提交的第 N 个祖先,这意味着您返回过去的 N 个提交,每次仅跟随一个父级。为了更清楚起见,在我们的示例中,HEAD~2将指定A