Git 头~4^2含义
在涉及相对提交引用的Udacity课程中,它说: ^表示父提交,~表示第一个父提交 ^和~之间的主要区别在于何时提交 从合并中创建。合并提交有两个父级。合并 提交时,^引用用于指示 提交,而^2表示第二个父级。第一个父对象是 运行git merge时所在的分支,而第二个父级为 合并到中的分支 根据本课程,基于以下Git 头~4^2含义,git,git-log,Git,Git Log,在涉及相对提交引用的Udacity课程中,它说: ^表示父提交,~表示第一个父提交 ^和~之间的主要区别在于何时提交 从合并中创建。合并提交有两个父级。合并 提交时,^引用用于指示 提交,而^2表示第二个父级。第一个父对象是 运行git merge时所在的分支,而第二个父级为 合并到中的分支 根据本课程,基于以下git log--graph--oneline的输出,使用SHAf69811c的提交是相对于(最上面的,带有头指针)提交9ec05ca的HEAD~4^2 所以头~4本身意味着第一个父项,
git log--graph--oneline
的输出,使用SHAf69811c
的提交是相对于(最上面的,带有头指针)提交9ec05ca
的HEAD~4^2
所以头~4本身意味着第一个父项,^2意味着它也是第二个父项?这些事情不是互相矛盾吗?请澄清
X~n
的意思是:n
X的第四个祖先
X^
表示:X的父级。这相当于X~1
如果X
有多个父项,则在使用^
符号时需要区分它们。因此,X^1
将是第一个父级,X^2
将是第二个父级,依此类推X^
相当于X^1
(也相当于X~1
)
在您的示例中,从commit9ec05ca
开始,即HEAD
:
是db7e87a
(或者HEAD~1
)HEAD^
是796ddb0
(或者HEAD~2
)HEAD^^
是1a56a81
(或者HEAD~4
,但没有人会使用它)HEAD^^^^
,作为e014d91
的第一父级,是1a56a81
,或HEAD~5
,或HEAD~4^
HEAD~4^1
,作为f69811c
的第二个家长,是1a56a81
HEAD~4^2
这并不是完全错误,但有点太短了:因为“~”操作符正在执行深度搜索(第n个祖先,实际上对应于单个分支上的第n个最后提交),所以它的参数不能指定父级(如果它们是多个)。因此,它假定它应该始终遵循其中的第一个。这与我们讨论父订单的地方有关。我建议不要阅读第三方教程<代码>~n多次表示追逐第一个父链接,默认值为1,
^n
表示追逐第n个父链接,默认值为1。谢谢,我没有领会你的最后两点。Udacity说~意味着第一个父母是错的吗?虽然有点让人困惑,但这并没有错~n
表示“选择第n代祖先,始终跟随第一个父级”,而^n
表示“在上一代中,选择第n个父级”。由于e6c65a6位于合并到主级的分支上,除了f69811c之外,它是否也是1a56a81(合并提交)的第二个父级,e6c65a6
根本不是1a5681
的父母,而是它的祖父母之一(因为它是f69811c
的父母)。附加问题:1a5681的另一个祖父母是什么?