【发布时间】:2013-08-30 01:01:49
【问题描述】:
背景:我最近将一个相当大的主题分支合并到master。几天后,我发现这个主题分支包含错误。所以我git revert -m 1 <merge-commit>了它。
问题:现在我想查看主题分支并将其重新设置为当前的master,以便我可以 1)修复错误和 2)(再次)合并已修复与主的主题分支。创建新分支fixedtopic 是很容易的部分,但每次我都这样做
git checkout fixedtopic
git rebase master
git 决定它不愿意重放旧的提交,因为它们已经合并到 master 中。相反,它只是做一个快进变基。
问题:如何使用rebase 强制将提交重播到fixedtopic?我可以吗?我宁愿不使用cherry-pick,因为它有点麻烦。
补充:
-
git reseting 合并提交它不是一个选项,因为我已将 master 推送到上游。 - 我宁愿不从
master创建一个新分支并还原我的还原。这样做的原因是我想使用交互式 rebase 重写一些主题分支的历史。 - 这里是该场景的 github 要点:https://gist.github.com/JensRantil/6352495 请注意,我希望将 e8df5ec 和 ee16464 应用于
master(或基于master的分支)。
【问题讨论】:
-
我和一位同事最近在功能分支上遇到了同样的问题。我们的解决方案或多或少与接受的解决方案相同,但我们选择将分支中的所有提交压缩为单个提交。这在功能上等同于还原还原,这最终更简单。只是给那些将来面临这个问题的人的注意事项。
-
git revert和git rebase都引用了描述如何处理此问题的 [revert-a-faulty-merge How-To][1]