您的当前位置:首页 > 热点 > git 恢复电脑删除的文件 正文

git 恢复电脑删除的文件

时间:2026-10-17 04:36:53 来源:网络整理 编辑:热点

核心提示

git 恢复电脑删除的文件,核心就一句话:只要文件被 git 跟踪过,且你删完没立刻清空回收站,那它大概率能找回来。甚至回收站清空了也没事,git 的本地仓库里可能还躺着完整副本。 上个月我手贱,在项

git 恢复电脑删除的复电文件,核心就一句话:只要文件被 git 跟踪过,脑删且你删完没立刻清空回收站,文件那它大概率能找回来。复电甚至回收站清空了也没事,脑删git 的文件本地仓库里可能还躺着完整副本。

上个月我手贱,复电在项目目录里跑了个 git clean -fd,脑删当时以为只是文件清理未跟踪的临时文件。结果跑完才发现,复电自己把写了三天的脑删配置文件也顺手删了——那文件确实没提交过,属于“未跟踪”状态。文件我盯着终端里刷过去的复电删除日志,后背发凉。脑删

但别慌,文件分情况处理。

情况一:文件已经被 git 提交过,后来又删了。
这种最简单。你直接 git checkout -- 文件名,或者 git restore 文件名(新版 git 推荐后者)。原理是 git 把每个提交过的版本都存在本地 .git 目录里,删除操作只是动了工作区,仓库里原封不动。我那次删的是未提交文件,用不了这招,但如果你只是普通删了个已提交文件,一秒恢复。

情况二:文件还没提交,属于未跟踪状态。
这时候 git clean 删掉的东西,git 仓库里确实没有记录。但有个隐蔽的救命稻草:git fsck --lost-found。这个命令会扫描 git 对象库里的“悬空对象”——那些曾经被 git 写入过但后来没被任何分支引用的数据块。我那次就是靠它找回的。

具体操作:在项目根目录跑 git fsck --lost-found,它会列出一堆 dangling blob 开头的哈希值。每个 blob 代表一个文件内容。然后用 git show 哈希值 逐个查看内容,找到你要的那个,重定向到新文件里。我那次列出来 47 个 dangling blob,挨个看内容看到第 12 个才找到配置文件。过程蠢了点,但管用。

还有个更狠的土办法:如果你电脑开了 Time Machine(macOS)或者文件历史记录(Windows),直接去快照里翻。git 不是唯一的恢复途径,系统备份往往更直接。我同事有次误删了整个 node_modules 目录,git 里根本没跟踪,全靠 Time Machine 捞回来的。

最后说个预防技巧,比恢复重要得多:养成 git add 后立刻 git commit 的习惯,别攒着一堆改动过夜。我那次丢文件,就是因为觉得“还没写完,等会再提交”,结果等来的不是写完,是误删。现在我的做法是:哪怕代码写一半,只要动了重要文件,先提交一个 WIP 提交,等写完再 git commit --amend 合并。代价是提交历史丑了点,但换来的安全感值回票价。

git 这东西,平时总觉得它啰嗦,每次提交都要写注释。但真到了文件被删的那一刻,你才会发现那些密密麻麻的哈希值,是你电脑里最靠谱的后悔药。