你有没有过这样的经历?改代码改到一半,手一抖把某个重要文件删了,然后大脑瞬间空白。别慌,只要这个文件之前提交过,Git 就能帮你找回来。
文件刚删,还没提交
如果你只是在本地删除了文件,但还没运行 git commit,那恢复起来最简单。直接执行下面这条命令:
git checkout -- <文件路径>比如你删了 src/utils.js,那就这样恢复:
git checkout -- src/utils.js这条命令会把文件从 Git 的暂存区重新拉回来,跟撤销操作差不多。
已经提交了删除操作
更常见的情况是,你不小心删了文件,还提交了,甚至可能又做了几次其他修改。这时候就得用 git checkout 指定历史提交来恢复。
先找到删文件之前的那次提交记录,可以用:
git log --follow -p <文件路径>查看文件被删掉前的最后状态。找到那个提交的哈希值(比如 abc1234),然后执行:
git checkout abc1234~1 -- <文件路径>这里的 ~1 是指删之前那一版。比如你要恢复的文件是 config.json,命令就长这样:
git checkout abc1234~1 -- config.json执行完,文件就回来了,再 git add 和 git commit 保存一下就行。
用 git reflog 找丢失的提交
要是你不仅删了文件,还强制推送、清理分支,连提交都找不到了,别急,Git 还留了后路——reflog 记录了你所有的操作历史。
运行:
git reflog你会看到一堆操作记录,比如“commit”、“reset”、“checkout”。找到删除文件前的那个状态,复制对应的哈希值,再用 git checkout 把文件捞出来。
比如你在 reflog 里看到 def5678 是删文件前的提交,那就:
git checkout def5678 -- <文件路径>文件立马复活。
Git 其实像个时光机,只要你没彻底清空本地仓库,大部分误操作都能逆转。关键是别 panic,按步骤一步步找回就好。