Git 头~4^2含义

Git 头~4^2含义,git,git-log,Git,Git Log,在涉及相对提交引用的Udacity课程中,它说: ^表示父提交,~表示第一个父提交 ^和~之间的主要区别在于何时提交 从合并中创建。合并提交有两个父级。合并 提交时,^引用用于指示 提交,而^2表示第二个父级。第一个父对象是 运行git merge时所在的分支,而第二个父级为 合并到中的分支 根据本课程,基于以下git log--graph--oneline的输出,使用SHAf69811c的提交是相对于(最上面的,带有头指针)提交9ec05ca的HEAD~4^2 所以头~4本身意味着第一个父项,

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

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

^和~之间的主要区别在于何时提交 从合并中创建。合并提交有两个父级。合并 提交时,^引用用于指示 提交,而^2表示第二个父级。第一个父对象是 运行git merge时所在的分支,而第二个父级为 合并到中的分支

根据本课程,基于以下
git log--graph--oneline
的输出,使用SHA
f69811c
的提交是相对于(最上面的,带有头指针)提交
9ec05ca
HEAD~4^2

所以头~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^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的另一个祖父母是什么?