执行git revert后如何恢复本地修改的代码?
恢复本地丢失修改的方法
场景1:本地修改未提交(未执行git add/git commit)
Git不会主动删除未提交的本地修改,除非你执行了git reset --hard、git checkout这类强制覆盖命令。可以通过以下步骤找回:
- 执行
git fsck --lost-found:该命令会把所有未被Git追踪的文件对象存入.git/lost-found/other目录 - 用
git show <对象ID>逐个查看目录里的对象内容,定位到你丢失的修改 - 找到目标对象后,执行
git show <对象ID> > 目标文件名,将内容导回原文件
场景2:本地修改已提交(但被revert覆盖)
如果你的本地修改已经提交为独立commit,只是被revert操作覆盖:
- 执行
git log --oneline查看提交历史,找到你之前的本地提交ID - 用
git cherry-pick <本地提交ID>将该提交的内容重新应用到当前分支 - 若出现冲突,手动解决后执行
git cherry-pick --continue即可完成恢复
后续操作建议
- 下次执行
git revert前,先用git stash暂存本地修改,完成revert后再用git stash pop恢复,避免冲突导致修改丢失 - 若要调整已合并到主线的提交,建议在revert后重新编写修正代码并提交,不要直接修改已推送的主线历史(风险极高)
内容的提问来源于stack exchange,提问作者user3927038
相关产品推荐
相关产品推荐

