HEAD~4 ^ 2的含义

时间:2018-05-20 19:24:17

标签: git git-log

在一篇涵盖相对提交引用的Udacity课程中,它说:

  

^表示父提交,〜表示第一个父提交

     

^和〜之间的主要区别在于提交时   从合并创建。合并提交有两个父母。合并   commit,^引用用于表示第一个父级   提交,而^ 2表示第二个父级。第一个父母是   你运行git merge时你所在的分支,而第二个父代是   合并的分支。

根据课程,基于git log --graph --oneline的以下输出,相对于(最顶部,带头指针)commit {{1},SHA f69811c的提交为HEAD~4^2 }}

所以HEAD~4本身意味着第一个父母,而^ 2意味着它也是第二个父母?这些东西不要相互矛盾吗?任何澄清都表示赞赏。

graph

2 个答案:

答案 0 :(得分:8)

X~n表示:n的{​​{1}}祖先。

X表示:X^的父级。这相当于X

如果X~1有多个父级,则需要在使用X表示法时区分它们。因此^将是第一个父级,X^1将是第二个父级,依此类推。 X^2相当于X^(也相当于X^1)。

在您的示例中,从提交X~1开始,即9ec05ca

  • HEADdb7e87a(或HEAD~1)。
  • HEAD^796ddb0(或HEAD~2)。
  • HEAD^^1a56a81(或HEAD~4,但没有人会使用它。)
  • HEAD^^^^e014d91第一个父,是1a56a81HEAD~5HEAD~4^
  • HEAD~4^1f69811c第二个父,为1a56a81

参考

https://git-scm.com/docs/gitrevisions

答案 1 :(得分:1)

+娜塔莉:这不是完全错误的,但它有点太短了:因为"〜"运算符正在执行深度搜索(第n个祖先,它实际上对应于单个分支上的第n个最后一次提交),如果它们中有很多,则它的参数不能指定父级。因此,它假设它应该始终遵循它们中的第一个。这与我们讨论父订单的your other question相关。