如何撤销误推送到远程origin master分支的Git合并提交?
撤销远程master分支上的误合并提交
前提说明
如果你的仓库是私有库,且没有其他团队成员已经拉取过这个错误的master分支,优先用重置强制推送的方式,能彻底消除误合并痕迹;如果已经有人拉取过错误分支,用撤销提交的方式更安全。
方法一:重置远程master到误合并前的状态(彻底消除痕迹)
- 切换到本地master分支
git checkout master - 找到误合并提交(4f56ec45)之前的正确提交ID
执行命令查看提交历史:
在输出里找到git log --oneline4f56ec45的上一条提交(也就是合并前master的最后一个正确提交),记下它的ID(比如abc1234)。
或者直接获取合并提交的第一个父节点(即原master的正确提交):
输出的第一个字符串就是目标提交ID。git show 4f56ec45 --pretty=format:"%P" - 重置本地master到正确提交
如果本地有未提交的改动,先暂存避免丢失:
然后重置:git stash
之后可以恢复暂存的改动:git reset --hard <正确提交ID>git stash pop - 强制推送到远程master,覆盖错误提交
git push origin master --force
方法二:用revert撤销合并提交(保留操作记录,适合多人协作场景)
- 切换到本地master分支
git checkout master - 撤销合并提交
-m 1表示保留合并提交的第一个父分支(即原master的状态),撤销用户分支的合并改动:
执行后会生成一个新的撤销提交,按提示填写提交信息即可。git revert -m 1 4f56ec45 - 推送撤销提交到远程
git push origin master
后续确认
- 回到你的开发分支,确保之前的改动还在:
git checkout <你的分支名称> - 如果之前本地改动意外丢失,可以用
git reflog查看所有本地操作记录,找到之前的提交或改动,用git reset --hard <记录里的ID>恢复。
内容的提问来源于stack exchange,提问作者ace
相关产品推荐
相关产品推荐

