【发布时间】:2021-10-15 05:01:58
【问题描述】:
我想在 Git 中执行以下转换:删除 2 个合并提交并将它们替换为来自 2 个绿色和粉红色分支的单个提交(我想要一个线性历史)
我检查了关于 SO 的类似问题,我认为这些命令可以简单地完成工作,没有任何冲突,因为 Git 足够聪明,可以在变基时使用合并提交:
git checkout master
git rebase c
# (I am allowed to force-push btw)
git push --force
但是由于提交 C .... :(
是否有任何方法可以实现这种线性提交历史,而无需解决任何冲突?我应该分两步以上吗?
注意1:实际上在 E 和 D 之间、c 和 a 之间以及 1 和 2 之间还有更多的提交,所以我想避免繁琐的手动挑选...... :) (我发布了一个问题的简化图)
注意2:当只有一个合并提交时,它工作正常,遵循this SO answer 中的第三个提示。但是这里有 2 个合并提交,如图所示。
提前感谢您的帮助?
【问题讨论】:
-
你可以用
git rebase做这种事情,但正确的做法是......不要这样做。说真的,不要这样做。这不值得努力。我以前自己做过,不值得。