如何删除已推送的合并Commit并将远程仓库回滚至指定提交?
如何回滚远程仓库到指定提交状态
别慌,这事儿处理起来很直接,分几步就能把远程仓库恢复到你截图里高亮的那个提交状态:
步骤1:获取目标提交的哈希值
先确认你要恢复到的那个高亮提交的哈希值(就是截图里那串长字符,比如a1b2c3d)。
步骤2:本地仓库硬重置到目标提交
在本地终端执行以下命令,把本地分支强制重置到目标提交状态:
git reset --hard <target-commit-hash>
注意:
--hard参数会丢弃本地所有未提交的变更,如果你还有没保存的工作,一定要先备份或者提交到临时分支!
步骤3:强制推送到远程仓库
因为你修改了仓库的提交历史,普通推送会被拒绝,所以需要用强制推送覆盖远程分支:
git push origin <你的分支名> --force-with-lease
推荐用--force-with-lease而不是直接--force,它会先检查远程分支有没有其他人的新提交,如果有的话就不会执行推送,能避免不小心覆盖别人的工作。
重要提醒
如果这个分支是多人协作共享的,强制修改历史会让其他开发者的本地仓库和远程产生冲突,这种情况下更稳妥的做法是用git revert命令创建一个新的提交来撤销上次的合并操作,而不是直接修改历史:
git revert <你要撤销的那个合并commit的哈希>
执行完后直接普通推送即可,这样不会影响仓库的历史记录,其他开发者拉取更新后也不会有问题。
内容的提问来源于stack exchange,提问作者Darko Darac
相关产品推荐
相关产品推荐

