Git引用已合并到当前分支

时间:2015-09-18 11:31:24

标签: git github

这是我的git repo的状态(u1表示我,u2是其他人)

C1(U1)->C2(U2)->C3(U2)->C4(U2)->C5(U2)->C6(U2)->C7(U2)->C8(U2)->C9(U2)->C10(U1)

因此,只有C1是我的提交,而C10实际上是冲突合并提交(当我从分叉回购中提取更改时)。

我目前的HEAD是在C10。我希望它在C9。

当我这样做的时候 git reset --hard HEAD~1 我看到它实际上恢复到C1(我在历史上的最后一次提交),这不是最后一次提交。

如何恢复为C9?

1 个答案:

答案 0 :(得分:2)

您应该编写git reset --hard HEAD^2,这意味着访问合并提交的第二个父项(即U2中的一个)

参见git-revisions

git help revisions
  

〜,例如掌握〜3

     

修订参数的后缀〜表示<n>代的提交对象       命名提交对象的祖先,仅跟随第一个父项。即<rev>~3是       相当于<rev>^^^,相当于<rev>^1^1^1。请参阅下面的插图       使用此表格。

在合并请求的情况下,第一个父项是合并分支的提交(这里将C9合并到C1中),因此C1是第一个父级,C9是第二个父级。

您可以使用nth

访问提交的commit^n父级

所以,如果你这样做

git reset --hard HEAD^2

它应该有用

有关^表示法的其他信息:

  

<rev> ^,例如HEAD ^,v1.5.1 ^ 0

     

修订参数的后缀^表示该提交对象的第一个父级。 ^ <n>表示
      第<n>个父(即<rev> ^等同于<rev> ^ 1)。作为一项特殊规则,<rev> ^ 0表示       提交自身,并在<rev>是引用提交的标记对象的对象名时使用       对象