[英]How to unremove files before first commit on git?
我不小心做了一个
git rm filename.txt -f
我删除了所有文件,认为它只会从提交中删除它们,现在需要恢复它们。 有没有办法或者他们永远失去了?
你的问题的标题似乎表明你的回购没有提交。
在这种情况下:
filename.txt
上的某些更改没有上演(例如:没有出现在最后的git add filename.txt
), git
没有该文件的副本,您将不得不查看从磁盘取回该文件的其他工具(几个 IDE 保留文件的本地历史记录,或者您可以运行磁盘恢复工具)git add filename.txt
时)仍然存在于git
的数据库中例如,请参阅此答案,了解从 git 的存储中取回一些数据的一种可能方法:
#!/bin/sh
git fsck --no-reflogs --unreachable |\
grep blob |\
cut -d' ' -f3 |\
sed -e 's|^\(..\)\(.*\)|.git/objects/\1/\2|' |\
xargs ls -l -t 2> /dev/null
这应该会给你一个哈希列表,其中一个哈希应该是你文件的内容。 该列表将按“最近的第一个”顺序排序,因此如果运气好的话,您的最后一个文件将列在第一个文件中。
您可以运行git show {hash}
查看 hash 和git show {hash} > back-from-the-dead.txt
的文件内容。
尝试
git reset head ~
如果你上演了你的提交,你可以恢复它,否则它可能永远死了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.