已执行revert commit但未推送,如何彻底撤销错误分支的所有提交?
彻底清除错误分支上的未推送提交记录
嗨,这种情况完全有办法解决的!毕竟你提到的两个提交(错误提交+撤销它的revert提交)都还没推送到远程仓库,操作起来很安全,给你两种方案,选你顺手的来:
方案一:用Git命令行快速处理
- 首先确保你当前正处于那个错误的分支上,可以用
git branch查看当前分支,前面带*的就是当前分支 - 如果你确定要回退最近的2个提交(也就是错误提交和revert提交),直接执行:
git reset --hard HEAD~2 - 要是你不确定要回退的次数,先执行
git log --oneline查看提交历史,找到错误提交之前的那个“干净”提交的哈希值(比如看起来像abc123的字符串),然后执行:
这样就能精准回退到你想要的干净状态,那两个多余的提交就彻底消失了。git reset --hard abc123
方案二:用Sourcetree图形界面操作
- 打开Sourcetree,切换到那个错误的分支
- 在左侧的「提交历史」面板里,找到错误提交之前的那个“干净”提交(也就是你希望分支回到的状态)
- 右键点击这个干净的提交,选择「Reset current branch to this commit」(重置当前分支到该提交)
- 在弹出的窗口中,选择**「Hard - discard all working copy changes」**选项,点击确认即可
注意:这个选项会丢弃当前工作区的未提交修改,如果这两个提交之后你还有没保存的工作,记得先右键点击工作区文件选择「Stash changes」暂存,或者手动备份哦
💡 小提醒:因为所有操作都只在本地分支进行,没有涉及远程仓库,所以完全不用担心影响团队的代码,放心操作就好!
内容的提问来源于stack exchange,提问作者Niclas M




