Git revert合并提交后重新merge feature分支无效果的原因与解决方法
Git 撤销合并后二次合并不生效问题解答
为什么二次合并feature分支没有效果?
Git的合并核心逻辑是:仅合并目标分支从未纳入过的源分支提交。
你第一次把feature合并到dev时,Git已经在提交历史里标记了「feature分支的所有提交已经被并入dev分支」。后续执行git revert -m 1 <合并提交哈希>操作,只是生成了一个新的反向提交,把合并带来的代码改动抹除,完全没有修改之前的合并历史记录。
所以第二次触发合并时,Git检查到feature分支的所有提交都已经在dev的历史记录中存在,判定没有新内容需要合并,自然不会把feature的改动重新引入dev。
如何重新合并feature分支的内容?
可以根据你的使用场景选择以下任意一种方案:
- 方法1:撤销之前的revert提交
适合不需要修改feature分支内容,仅需要恢复之前合并的全部内容的场景,找到之前执行合并撤销生成的revert提交哈希,直接撤回该提交即可:git revert <revert提交的哈希值> - 方法2:变基feature分支后合并
适合需要在feature分支新增改动,或需要保留feature分支提交历史的场景,通过变基生成一套新的提交哈希,让Git判定为dev未纳入过的新提交:# 切换到feature分支 git checkout feature # 以dev的最新提交为基准变基,强制生成新提交 git rebase --no-ff dev # 切回dev执行合并即可 git checkout dev git merge feature - 方法3:强制触发合并提交
适合不想修改任何分支历史的场景,合并时添加参数强制生成新的合并提交,手动确认内容即可:git checkout dev git merge --no-ff feature
内容的提问来源于stack exchange,提问作者Royi Namir
相关产品推荐
相关产品推荐

