繁体   English   中英

修复拙劣的`git rebase`

[英]Fixing a botched `git rebase`

我了解git rebase有点。 而且我了解git refloggit reset --hard也有点git reset --hard 但是我尝试过的SO答案博客文章似乎无法帮助我解决我所犯的错误。

我正在努力更改木偶 当我注意到某个时刻我实际上已经以某种方式将一堆提交“附加” 到我的PR时,我像往常一样将提交压缩为一个。 现在 ,它列出了6个提交 ,而我的最新提交则与其他提交分开了。

我不确定这是当您压缩来自多个用户的提交时的压缩效果,所以我的第一个问题是:这是怎么回事? 他们不小心被压扁了吗?

第二个问题是我该如何解决? 我似乎无济于事。 我将git reset --hard为我进行任何git reset --hard调整之前的值,并且仍然将这6次提交显示为未推送的提交。 即使在克隆存储库时一直reset --hard ,它仍然会列出其他提交。

这里发生了什么? 您对我该如何解决有任何想法?

答案是这样的(信用转到cobbweb ):

  1. 完全硬重置您的存储库
    git reset --hard origin/master

    这样做是将您的存储库更新为与远程存储库相同的状态。 它还会将所有提交(您想要的和您不想要的提交)都设置为本地分支中未推送的提交。 这就是您想要的地方。

  2. 选择所需的提交
    git cherry-pick {{ SHA }}

    其中{{SHA}}是该事物的提交ID。 看起来像344dc098ffle90aaef3

  3. 用力推动,您应该会很好。
    git push --force

如果您想进一步了解此处发生的情况,请对我们在这里所做的每件事进行google / SO搜索:硬重置,精心挑选和强制推送。 您会发现有关它们的大量信息。

注意:此问题和解决方案仅涉及master分支。 如果要处理一个以上分支的情况,情况可能会有所不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM