智用指南
第二套高阶模板 · 更大气的阅读体验

Git如何恢复删除文件:实用操作指南

发布时间:2026-01-07 01:30:29 阅读:23 次

在开发过程中,一不小心把重要的文件删了,是常有的事。特别是用 Git 管理项目时,有时候执行了 git rm 或者手动删除后提交了变更,心里顿时咯噔一下。别慌,只要文件曾经被 Git 跟踪过,就有办法找回来。

文件刚删还没提交?直接还原

如果你只是删了文件,但还没运行 git commit恢复最简单。Git 还保留着工作区的修改记录,用下面这行命令就能把所有已删除但未提交的文件复原:

git checkout -- .

如果你想只恢复某个特定文件,比如 config.js,可以指定文件路径:

git checkout -- config.js

已经提交了删除操作?从上一个版本取回

有时候你不仅删了文件,还执行了 git addgit commit。这时候也不能急着重写代码,Git 的历史记录就是你的“时光机”。

先查一下最近的提交记录,找到删除文件之前的那个版本:

git log --oneline

假设你看到类似这样的输出:

a1b2c3d Remove config.js
f4e5d6c Update README

说明 a1b2c3d 这次提交删了文件。你想恢复,就得从它的前一个版本(f4e5d6c)中把 config.js 拿回来:

git checkout f4e5d6c -- config.js

这时候文件就回到工作区了,记得再提交一次把它加回去:

git add config.js
git commit -m "Restore config.js"

文件从未被跟踪?Git 也无能为力

要注意的是,如果这个文件是你刚创建、还没执行过 git add,就被删了,那 Git 历史里根本没有它,也就没法恢复。这种情况只能靠编辑器的本地历史或者系统备份,所以及时提交是个好习惯。

用 reflog 找更久远的操作

如果你记不清具体是哪次提交删的,或者分支切换太频繁,可以试试 reflog。它记录了你在本地仓库的所有动作:

git reflog

你会看到类似:

a1b2c3d HEAD@{0}: commit: Delete unused files
f4e5d6c HEAD@{1}: checkout: moving from main to dev

然后就可以基于 HEAD@{1} 或任意位置恢复文件,方法和前面一样:

git checkout HEAD@{1} -- filename.txt

恢复完成后,文件会出现在工作区,确认没问题再提交即可。

小技巧:预防胜于恢复

平时开发时,不要一口气删一堆文件再提交。每次改动尽量小,提交信息写清楚,这样万一出问题,追溯和恢复都轻松得多。就像做饭前先把食材摆好,出了错也能快速回头。”}