您现在的位置是:时尚 >>正文
git 恢复电脑删除的文件
时尚84人已围观
简介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 这东西,平时总觉得它啰嗦,每次提交都要写注释。但真到了文件被删的那一刻,你才会发现那些密密麻麻的哈希值,是你电脑里最靠谱的后悔药。
Tags:
下一篇:贝壳网官网入口
相关文章
传奇单职业充值点漏洞
时尚充值页面弹出来的瞬间,我盯着那个“单职业专属礼包”的按钮,手指悬在鼠标上没点下去。不是因为价格——98块,跟平时没什么两样。而是我注意到一个细节:支付成功后的回调地址,那个URL末尾的sign参数,居 ...
【时尚】
阅读更多雾化器航空插头
时尚雾化器上的航空插头,多数人第一次见到都会愣一下——这玩意儿不是该出现在飞机翅膀底下吗? 去年在深圳一家医疗器械厂,我亲眼看见老师傅把一根银白色的金属插头怼进雾化器底座,咔嗒一声脆响,六颗弹簧触点同时咬 ...
【时尚】
阅读更多网络举报网站
时尚中央网信办举报中心的官网,我去年点进去过一次。页面朴素得不像个国家机关——白底蓝字,像2008年的论坛。但就是这不起眼的页面,每天要接收成千上万条举报,从“某主播直播飙车”到“某地政府网站泄露公民身份 ...
【时尚】
阅读更多