问题描述
我忘记将 .ai 添加到我的 .gitignore 文件中,但是运行了
$ git add .
并将相当多的 .ai
文件添加到索引中。
当我跑的时候
$ git status
看到它们,我想从索引中删除它们。
我匆忙跑了
$ git restore -s@ -SW
导致我所有的 .ai
文件都从我的工作树中消失了。我不应该使用 W
。
有什么办法可以找回我的 .ai
文件吗?
解决方法
首先,检查您是否仍然可以通过“本地历史记录”访问这些文件(由您的 IDE 记录,而不是 Git)
例如,作为 Local History VSCode extension 的 suggested here 可以提供帮助。
如果没有,请仔细检查您的操作系统备份功能,例如 MacOS Time Machine status,以防您可以从备份中恢复它们。
最后,由于您已将这些文件添加到索引中,check git fsck
git fsck --cache --no-reflogs --lost-found --unreachable HEAD
从列出的 SHA1 中,您可以执行 git show
:
git show "<SHA-1 REFERENCE TO THE BLOB OBJECT HERE>" > lost_file.txt
如 torek 中的 the comments 所述:
请注意,您还可以在 .git/lost-found/other
目录中找到每个“无法访问的 blob”的内容。
这通常比 git show
更快更容易,因为您可以通过 cd .git/lost-found/other
和 grep expected-string *
找到具有预期字符串的文件。