Git指合并到当前分支中的提交

Git指合并到当前分支中的提交,git,github,Git,Github,这是我的git回购协议的状态(u1表示我,u2表示其他人) 所以只有C1是我的提交,而C10实际上是冲突合并提交(当我从forked repo中提取更改时) 我现在的头是C10。我希望它在C9 当我这样做的时候 git重置——硬头~1 我看到它实际上恢复到C1(我在历史上的最后一次提交),这不是总体上的最后一次提交 如何恢复到C9?您应该编写git reset--hard HEAD ^2,这意味着访问合并提交的第二个父级(U2的一个) 参见git修订版 git help revisions ~

这是我的git回购协议的状态(u1表示我,u2表示其他人)

所以只有C1是我的提交,而C10实际上是冲突合并提交(当我从forked repo中提取更改时)

我现在的头是C10。我希望它在C9

当我这样做的时候
git重置——硬头~1
我看到它实际上恢复到C1(我在历史上的最后一次提交),这不是总体上的最后一次提交


如何恢复到C9?

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

参见git修订版

git help revisions
~,例如大师~3

revision参数的后缀~表示第次生成的提交对象
命名提交对象的祖先,仅在第一个父对象之后。也就是说,
~3

相当于
^^
,相当于
^1^1^1
。请参见下面的示例,以了解 此表格的用法

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

您可以使用
commit^n

所以如果你这样做了

git reset --hard HEAD^2
应该行得通

有关
^
符号的其他信息:

^,例如HEAD^,v1.5.1^0

修订参数的后缀“^”表示提交对象的第一个父对象^<代码>表示
父项(即
^相当于
^1)。作为特殊规则,
^0表示 提交本身,当
是引用提交的标记对象的对象名时使用 反对


使用
git log
检查C9的哈希值,并使用
git reset--hard
?:)@当然可以。但是git reset——hard HEAD~1恢复到我的上一次提交(而不是总体上的上一次提交)这是预期行为吗?嗯,让我检查一下文档。好的,我发现另一个问题与您的问题类似,请看一看:不起作用。头^2回滚到我的第二次最后提交(即C1之前的提交)。我希望它位于C9(它是C10的总体父级)您确定使用
^
而不是
~
?你能发送一张gitk的截图吗?这对我来说很好:git reset——硬头^2正确地进入了“修复问题”委员会,你是对的。我用的是~而不是^。然而,这又让我想到了C9,但我看到了提交C1(在它丢失之前的一个,因为我没有将它推到remote)。我最终使用HEAD~1,然后从远程提取代码并再次合并。
git reset --hard HEAD^2