Git中如何撤销已推送的合并master提交并保留目标提交?
解决方案
1. 先同步本地与远程分支
先确保本地分支和远程保持一致:
git fetch origin git checkout org-manage
2. 撤销错误的合并提交
根据分支使用场景选对应的方法:
方法一:重置到正确提交(适合仅你一人使用的分支)
如果这个远程分支只有你在操作,直接把分支回滚到你想保留的那个提交:
# 把<good-commit-hash>替换成你要保留的提交哈希值 git reset --hard <good-commit-hash> # 强制推送覆盖远程的错误分支 git push origin org-manage --force
方法二:反向撤销提交(适合多人协作的分支)
如果分支还有其他同事在用,为了不破坏共同的提交历史,用反向提交来抵消错误合并的变更:
# 把<bad-merge-commit-hash>替换成那个错误合并提交的哈希值 # -m 1表示保留当前分支(你的org-manage)内容,丢弃master合并进来的所有变更 git revert -m 1 <bad-merge-commit-hash> # 推送新的撤销提交到远程 git push origin org-manage
3. 确认并创建PR
用git log查看提交历史,确认错误合并的变更已经被移除。之后就可以正常去代码托管平台,基于你的org-manage分支创建Pull Request了。
内容的提问来源于stack exchange,提问作者TikuBadmash
相关产品推荐
相关产品推荐

