如何彻底撤销含多提交的Git分支合并?git reset --hard是否可行?
撤销GitHub上的PR合并并移除所有相关提交
git reset --hard <合并前提交SHA>的效果
是的,这个命令完全可以移除合并后master分支中来自feature分支的所有提交,以及合并提交本身。
具体逻辑:
git reset --hard会强制将当前分支(此处为master)的HEAD指针回退到你指定的合并前提交节点- 同时会同步更新工作区与暂存区至该节点的状态,相当于直接抹除了从该节点之后产生的所有提交记录——包括那次合并提交,以及feature分支带来的50个独立提交
关键注意事项
- 该操作具有破坏性:回退点之后的所有提交会从master的本地历史中彻底消失,若未提前记录这些提交的SHA值,将无法恢复
- 若master分支已推送到远程GitHub仓库,需执行
git push --force强制覆盖远程分支历史。但需注意:如果其他开发者已拉取过合并后的master分支,他们本地的历史会与远程产生冲突,需让他们执行git fetch origin && git reset --hard origin/master来同步最新状态 - 若担心强制改写远程历史影响团队协作,可替代方案是
git revert -m 1 <合并提交SHA>:该命令不会删除原有提交记录,而是生成一个新提交来抵消合并带来的代码改动,最终代码状态回到合并前,但历史中仍会保留原合并及feature分支的提交记录
内容的提问来源于stack exchange,提问作者Abdul Ahmad
相关产品推荐
相关产品推荐

