[英]Fixing a botched `git rebase`
我了解git rebase
有点。 而且我了解git reflog
和git reset --hard
也有点git reset --hard
。 但是我尝试过的SO答案和博客文章似乎无法帮助我解决我所犯的错误。
我正在努力更改木偶 。 当我注意到某个时刻我实际上已经以某种方式将一堆提交“附加” 到我的PR时,我像往常一样将提交压缩为一个。 现在 ,它列出了6个提交 ,而我的最新提交则与其他提交分开了。
我不确定这是当您压缩来自多个用户的提交时的压缩效果,所以我的第一个问题是:这是怎么回事? 他们不小心被压扁了吗?
第二个问题是我该如何解决? 我似乎无济于事。 我将git reset --hard
为我进行任何git reset --hard
调整之前的值,并且仍然将这6次提交显示为未推送的提交。 即使在克隆存储库时一直reset --hard
,它仍然会列出其他提交。
这里发生了什么? 您对我该如何解决有任何想法?
答案是这样的(信用转到cobbweb ):
完全硬重置您的存储库
git reset --hard origin/master
这样做是将您的存储库更新为与远程存储库相同的状态。 它还会将所有提交(您想要的和您不想要的提交)都设置为本地分支中未推送的提交。 这就是您想要的地方。
仅选择所需的提交
git cherry-pick {{ SHA }}
其中{{SHA}}
是该事物的提交ID。 看起来像344dc098ffle90aaef3 。
用力推动,您应该会很好。
git push --force
如果您想进一步了解此处发生的情况,请对我们在这里所做的每件事进行google / SO搜索:硬重置,精心挑选和强制推送。 您会发现有关它们的大量信息。
注意:此问题和解决方案仅涉及master分支。 如果要处理一个以上分支的情况,情况可能会有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.