HEAD~4 ^ 2的含义

Nat*_*lie 6 git git-log

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

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

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

根据课程,基于以下输出git log --graph --oneline,SHA的提交f69811cHEAD~4^2相对于(最顶部,带头指针)提交9ec05ca.

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

图形

mkr*_*er1 9

X~n意思是:的n祖先X.

X^意思是:的父母X.这相当于X~1.

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

在您的示例中,从commit开始9ec05ca,即HEAD:

  • db7e87aHEAD~1(或备选地HEAD^).
  • 796ddb0HEAD~2(或备选地HEAD^^).
  • 1a56a81HEAD~4(或者HEAD^^^^,没有人会使用它).
  • e014d91,作为第一亲本1a56a81,是HEAD~5HEAD~4^,或.HEAD~4^1
  • f69811c,作为第二亲本1a56a81,是.HEAD~4^2

参考

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