11

我正在寻找一个很好的描述,如果一个人在变基期间提交会发生什么,以及如何以一种简单的方式“恢复”。

让我们考虑一个场景,其中大型提交被重新设置。在 rebase 期间会出现冲突,并且用户开始合并更改。现在,想象一下你几乎完成的场景,但你没有调用git rebase --continue - 无论出于何种原因(无论是长周末还是这样)。下周你刚刚恢复工作,仍然在 rebase 期间。最后,您调用git commit --amend将更改附加到最后一次提交,并且......它们最终会出现在您要重新定位的提交中。

自然地,您总是可以检查您开始变基的提交并“破解您的方式” - 例如,通过尝试从您的修改中复制所有文件,但这可能会放弃同时引入的更改。

有没有一个干净的好方法来解决这个问题?这是我应该小心的一种特殊状态,我不想最终陷入这种状态,但它仍然偶尔会发生——我最终花了一整天的时间试图把事情弄清楚。

我真的很感激所有的帮助和建议。谢谢!

4

1 回答 1

5

针对这种情况提出了两种解决方案。

  • 第一个解决方案是将最终结果重新设置为原始基本提交。这将要求您再次解决类似的合并冲突,但是当您完成后,您的提交应该回到正轨。

  • 对我有用的替代解决方案是分支与您修改的提交相同的点(它带有 SHA,应该用作结帐基础)。然后创建一个新分支并调用git merge --no-ff --no-commit --strategy=theirs other_branch,其中 *other_branch* 是提交不幸的分支。

于 2012-08-02T11:58:01.963 回答