修复一个拙劣的`git rebase`

时间:2014-01-13 03:54:26

标签: git github git-rebase git-reset

我理解git rebase了一下。我也理解git refloggit reset --hard。但我试过的SO answersblog posts似乎无法帮助我解决我所犯的错误。

我正在努力改变Marionette。我正在按照惯例做的事情,将我的提交压缩成一个,当我在某个时候注意到我实际上已经以某种方式“附加”了一堆提交to my PRnow lists 6 commits,我最近的一个与其他人分开。

我不确定当你从多个用户那里压缩提交时,这是什么样的压缩,所以我的第一个问题是:这里发生了什么?他们不小心被压扁了吗?

第二个问题是我如何解决这个问题?我所做的一切似乎都没有用。在我做任何rebase之前我git reset --hard,它仍然显示那6个提交为未提交的提交。即使我在克隆回购的过程中一直reset --hard ,它仍会列出其他提交。

这里发生了什么?你对我如何解决这个问题有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

  2. 选择 您想要的提交 git cherry-pick {{ SHA }}

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

  3. 强行推动,你应该好好去 git push --force

  4. 如果您想了解更多关于这里发生了什么的事情,请对我们在这里完成的每项事情进行谷歌/搜索:硬重置,挑选樱桃和强制推送。你会找到关于它们的大量信息。

    注意:此问题和解决方案仅涉及分支。如果您正在处理具有多个分支的情况,情况可能会有所不同。