我正在寻找一个很好的描述,如果一个人在rebase期间提交以及如何以一种简单的方式“恢复”它会发生什么。
让我们考虑一个场景,其中大型提交被重新定位。在rebase期间,出现冲突并且用户开始合并更改。 现在,想象一下你几乎已经完成的情景,但你没有打电话给 git rebase --continue - 无论出于何种原因(无论是长周末还是这样)。接下来的一周,你刚刚恢复工作,在退缩期间。最后,您调用 git commit --amend 将更改附加到最后一次提交,并且...它们最终会在您重新引入的提交中。
当然,你总是可以检查你开始改变的提交并“破解你的方式thruogh” - 例如,试图从你的修改中复制所有文件,但这可能会删除引入的修改其间。
有没有一个干净,好的方法来解决这个问题?这是一个我应该小心的特殊状态,我永远不想最终进入它,但它偶尔也会发生 - 我最终花了一整天时间试图把事情做好。
我非常感谢所有的帮助和建议。谢谢!
答案 0 :(得分:4)
这种情况有两种建议的解决方案。
第一个解决方案是将最终结果重新设置回原始基本提交。这将要求您再次解决类似的合并冲突,但是当您完成后,您的提交应该回到正轨。
替代解决方案,对我有用,是分支与您推荐的提交相同的点(它带有SHA,应该用作结账基础)。然后创建一个新分支并调用git merge --no-ff --no-commit --strategy=theirs other_branch
,其中* other_branch *是一个不幸的提交。