HEAD~用于合并提交

时间:2016-09-07 13:45:08

标签: git

在Git中,您可以使用简写HEAD~来引用HEAD之前的提交,使用HEAD~2之前引用两次等等。

我有一个存储库,它具有如下所示的合并提交:

A----B-------------F
      \           /
       C----D----E

HEAD = F,HEAD~指向B,HEAD~2指向A.使用这样的合并提交,是否有指向E的简写?

2 个答案:

答案 0 :(得分:6)

是;在合并的情况下,~指定生成but you can use ^ to specify the parent number

git show HEAD^2

将显示第二位父母。

(区别特别微妙,因为如果没有数字参数~^显示相同的内容,HEAD的第一个父级。这是因为~并且^默认为1而没有数字参数。所以他们显示第一个父(按深度)和第一个父(按宽度),当然是相同的。)

答案 1 :(得分:1)

我知道你要求提交E,但是提交C的简写是理解^和〜之间差异的更好的例子。

以下是C:

的简写
HEAD^2~2

e.g。 HEAD的第二个父母,然后2从那里跳下第一个母链。

尝试克隆此回购以自己查看(查找"克隆"链接):

http://vm.bit-booster.com/bitbucket/plugins/servlet/bb_net/projects/BB/repos/a/commits

enter image description here

以下是这个答案涵盖的各种缩写解决方法:

git show --no-patch --oneline HEAD
1286a9a F

git show --no-patch --oneline HEAD^2
9640db6 E

git show --no-patch --oneline HEAD^2~2
506916b C

为读者练习:用另一种方式(使用这个回购)写HEAD ^ 2~3?