在一篇涉及相对提交引用的Udacity课程中,它说:
^表示父提交,〜表示第一个父提交
^和〜之间的主要区别在于从合并创建提交时.合并提交有两个父母.使用合并提交时,^引用用于指示提交的第一个父级,而^ 2用于指示第二个父级.第一个父项是运行git merge时所在的分支,而第二个父项是合并的分支.
根据课程,基于以下输出git log --graph --oneline,SHA的提交f69811c是HEAD~4^2相对于(最顶部,带头指针)提交9ec05ca.
所以HEAD~4本身意味着第一个父母,而^ 2意味着它也是第二个父母?这些东西不要相互矛盾吗?任何澄清都表示赞赏.
X~n意思是:的n祖先X.
X^意思是:的父母X.这相当于X~1.
如果X有多个父级,则需要在使用该^表示法时区分它们.那么X^1第一个父母X^2就是第二个父母,依此类推.X^相当于X^1(也相当于X~1).
在您的示例中,从commit开始9ec05ca,即HEAD:
db7e87a是HEAD~1(或备选地HEAD^).796ddb0是HEAD~2(或备选地HEAD^^).1a56a81是HEAD~4(或者HEAD^^^^,没有人会使用它).e014d91,作为第一亲本的1a56a81,是HEAD~5或HEAD~4^,或.HEAD~4^1f69811c,作为第二亲本的1a56a81,是.HEAD~4^2https://git-scm.com/docs/gitrevisions