误提交master后回滚,合并分支X时变更丢失的修复方法
问题修复方案
核心原因
你遇到的问题本质是:git revert 会生成一个新的反向提交来抵消原变更,当后续合并分支X到master时,Git会识别到原提交已经被“处理过”(存在对应的revert提交),因此不会再次将原变更引入master分支。
最恰当的修复方法
方法1:在master分支上回滚之前的revert提交(推荐)
这是最直接且安全的方式,不会破坏分支X的历史:
- 切换到master分支:
git checkout master - 找到之前执行
git revert生成的提交ID(可通过git log查看,找备注包含"revert"的提交) - 回滚这个revert提交:
该操作会生成新提交,重新恢复之前被回滚的变更。git revert <revert提交的ID> - 合并分支X到master:
此时Git会正常合并分支X的内容,之前的冲突点已被解决。git merge X
方法2:在分支X上重新生成变更(适合需调整原代码的场景)
如果原提交的代码需要修改,或不想保留revert的历史痕迹,可按以下操作:
- 切换到分支X:
git checkout X - 若之前合并master到X时未包含最初误提交的变更,用
git cherry-pick复制原提交到X分支:git cherry-pick <原提交ID> - 按需修改代码后提交:
git add . git commit -m "重新提交原变更(或调整后的版本)" - 切换回master分支,仅当master为私有分支且未被他人同步时,可撤销revert提交:
git reset --hard <revert操作前的master版本号> - 合并分支X到master:
git merge X
注意:
git reset --hard会丢弃master上revert之后的所有提交,仅适用于master未被其他开发者拉取的场景,否则优先使用方法1。
内容的提问来源于stack exchange,提问作者codemonkey
相关产品推荐
相关产品推荐

