首页 > 解决方案 > Git 与提交覆盖合并

问题描述

我从master创建了一个分支A。在这个分支上,我执行并重rebase --i命名了一些从一开始就存在的提交。现在我想将分支 A 合并回 master,用他们在分支 A 上设置的消息覆盖来自 master 的提交。但是,如果我调用mergeThe commits from branch A are put on commits already on master。有没有办法强制用master分支 A 上的更新版本替换旧提交?

标签: git

解决方案


免责声明:不要在不了解后果的情况下更改已发布的 Git 历史记录。它可能会给他人和您带来问题。阅读有关强制推送或变基的所有警告。

如果我对您的理解正确并且您已在评论中确认了这一点,那么您目前拥有的是:

a-b-c--d--e <- master
   \
    c'-d'-e' <- A

你希望它来:

a-b (-c--d--e)
   \
    c'-d'-e' <- A, master

然后,您可以简单地删除主分支并在适当的提交处重新创建。或者,强制创建它(结果是一样的):

git branch -f master A

这将创建一个master指向与 相同的提交的分支A,包括 A 的所有历史记录。现有的master历史将丢失。


推荐阅读