我不小心输入了,git checkout -f因为我试图恢复已删除的文件,但现在所有未提交的文件都消失了...这是一天的工作...有没有办法将其恢复?谢谢。
在但丁的地狱之外,你有一个滚雪球的机会来完成这个,但这取决于一个非常重要的一步。
git add在此之前的某个时刻运行过这些文件。否则,你就不是玩得很开心。
如果有,那么您可以运行git fsck --lost-found以恢复已删除的任何文件。您将得到的不是确切的文件名,而是一个悬空的提交 blob。
makoto@LATLON-Undefined:~/Desktop/smoketest$ echo "Goodbye file" > badfile.txt
makoto@LATLON-Undefined:~/Desktop/smoketest$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
badfile.txt
nothing added to commit but untracked files present (use "git add" to track)
makoto@LATLON-Undefined:~/Desktop/smoketest$ git add .
makoto@LATLON-Undefined:~/Desktop/smoketest$ git reset --hard HEAD
HEAD is now at 7124f25 Initial
makoto@LATLON-Undefined:~/Desktop/smoketest$ git status
On branch master
nothing to commit, working directory clean
makoto@LATLON-Undefined:~/Desktop/smoketest$ git fsck --lost-found
Checking object directories: 100% (256/256), done.
dangling blob 4a503984f4847abd45f4d795d1b74c6482164dcb
Run Code Online (Sandbox Code Playgroud)
这些 blob 都没有附加任何文件信息;即它们是什么文件名。但它们仍然是您的数据。
根据您手头上的情况,您可以执行以下两项操作之一:
参考此网站,您可以尝试使用他们的 Bash 脚本来提取所有悬空的 blob,并将它们放入当前目录中,并以其哈希值作为文件名。
我还没有亲自测试过这个脚本,但他确实展示了它的工作视频。
for blob in $(git fsck --lost-found | awk '$2 == "blob" { print $3 }');
do git cat-file -p $blob > $blob.txt;
done
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3731 次 |
| 最近记录: |