已推送到远程的合并提交如何回滚?后续怎样重新合并?
问题解决方案
1. 当前执行回滚的操作
由于合并后dev分支已产生新提交,不能用git reset改写公共历史,必须通过git revert安全撤销合并:
- 找到合并ml_DEL-1049到dev的合并提交哈希值(从git log里找带
Merge branch 'ml_DEL-1049' into dev的提交)。 - 执行命令:
这里git revert -m 1 <合并提交哈希值>-m 1指定以dev分支为主父分支,会彻底撤销合并时从ml_DEL-1049引入的所有修改(这就是你之前只回滚部分内容的核心原因:未指定父分支,仅撤销了合并提交本身的变更)。 - 将revert提交推送到远程:
git push origin dev
执行后,dev分支会保留合并后的新提交,同时完全移除那次合并带来的ml_DEL-1049分支修改。
2. 回滚后重新合并ml_DEL-1049分支的操作
当需要重新合并该分支成果时,只需撤销之前的revert提交即可:
- 找到之前生成的revert提交哈希值(通过
git log --oneline查看,提交信息通常是Revert "Merge branch 'ml_DEL-1049' into dev")。 - 执行命令撤销这个revert,恢复原合并的修改:
git revert <revert提交的哈希值> - 若ml_DEL-1049有新修改,先同步dev分支内容并解决冲突:
git checkout ml_DEL-1049 git pull origin ml_DEL-1049 git merge dev # 手动解决冲突后提交 git add . git commit -m "Resolve conflicts with dev" - 切换回dev分支完成合并:
git checkout dev git merge ml_DEL-1049 git push origin dev
内容的提问来源于stack exchange,提问作者Maxim Lukyanovich
相关产品推荐
相关产品推荐

