撤销Git合并后,如何重新执行合并操作?
解决Git撤销合并后重新合并丢失历史提交的问题
你遇到的问题核心是Git将合并撤销操作(merge-revert)标记为新提交,它会认为commit1、commit2的变更已被“抵消”,因此再次合并master时会自动跳过这些变更。以下是两种可行的解决方法:
方法一:反向撤销之前的合并操作(适合未推送到远程或团队未依赖该撤销提交的场景)
- 切换到A分支:
git checkout A - 找到那个合并撤销的commit(比如你提到的commit7),执行反向撤销:
git revert <commit7的哈希值>- 这会生成一个新提交,将之前被撤销的master分支变更重新恢复到A分支
- 执行合并master分支的操作:
git merge master- 此时Git会正常识别master分支的所有commit(包括commit1、commit2、commit3、commit4),处理可能出现的代码冲突即可
方法二:强制合并并手动恢复变更(适合已推送撤销提交、团队已拉取的场景)
如果不想撤销之前的merge-revert提交(避免影响团队其他成员),可以直接合并master后手动恢复丢失的变更:
- 切换到A分支:
git checkout A - 执行合并master分支:
git merge master- 此时Git可能不会自动引入commit1、commit2的变更,因为它认为这些变更已经被撤销过
- 手动找回commit1和commit2的变更:
- 用
git show <commit1哈希值>和git show <commit2哈希值>查看两个提交的具体变更,手动将这些变更重新应用到当前代码中 - 或者使用
git cherry-pick <commit1哈希值> <commit2哈希值>,将这两个提交的变更单独挑到A分支(注意处理可能的冲突)
- 用
- 提交合并后的变更:
git add . && git commit
内容的提问来源于stack exchange,提问作者hahashuo
相关产品推荐
相关产品推荐

