如何撤销尚未push的revert commit,保留本地代码并推送变更?
操作步骤(全程不会丢失你要保留的代码)
第一步:撤销本地的revert commit,恢复被移除的代码
首先执行git log --oneline找到你刚才执行revert生成的commit记录,记下对应哈希值的前7位(比如示例为abc1234)。
- 如果你已经完成了revert的提交:执行
git reset --soft abc1234~1,该操作会撤销revert提交,同时把被revert抹除的代码变更全部保留在暂存区,和你贴出的git status里的待提交变更一致 - 如果你还没提交revert的结果:直接执行
git revert --abort即可终止revert操作,恢复所有代码
第二步:新建分支备份要保留的代码
现在暂存区的内容就是你要留存的代码,直接执行以下命令:
- 新建并切换到新分支:
git checkout -b <自定义分支名,比如backup/listings-related-code> - 提交暂存的代码到新分支:
git commit -m "backup: 留存列表页相关原有代码" - 推送新分支到远端备份:
git push origin <刚才的自定义分支名>
完成后你的代码就安全备份在远端新分支,不会丢失。
第三步:在新分支执行取消合并的revert操作
现在你在新建的分支上,找到你原本要取消的那次合并的commit哈希,执行:git revert -m 1 <合并commit的哈希值>
这里的-m 1表示以master分支的代码作为父版本,实现取消合并的效果。执行后检查代码是否符合预期,revert会自动生成提交信息,确认后直接完成提交即可。
第四步:推送revert结果到GitHub并发起PR
执行git push origin <你的新分支名>,将revert后的代码推送到远端。
如果之前发起PR看不到差异,是因为你的分支和远端master的提交基线不一致,推送前先执行git pull origin master拉取最新的master代码,解决可能存在的冲突后再推送,PR就能正常显示所有变更差异,无需强制提交
内容的提问来源于stack exchange,提问作者Rija Saleem
相关产品推荐
相关产品推荐

