如何在git上第一次提交之前取消移动文件?
我不小心犯了一个错误如何在git上第一次提交之前取消移动文件?,git,Git,我不小心犯了一个错误 git rm filename.txt -f 我删除了我所有的文件,以为这只会从提交中删除它们,现在需要恢复它们。有办法吗?还是他们永远失去了呢?试试看 git reset head ~ 如果你进行了提交,你可以恢复它,否则它可能永远死。你问题的标题似乎表明你的回购协议没有提交 在这种情况下: 不幸的是,如果filename.txt上的某些更改没有被暂存(例如:在您运行的最后一个git add filename.txt中不存在),git没有该文件的副本,您必须查看其他
git rm filename.txt -f
我删除了我所有的文件,以为这只会从提交中删除它们,现在需要恢复它们。有办法吗?还是他们永远失去了呢?试试看
git reset head ~
如果你进行了提交,你可以恢复它,否则它可能永远死。你问题的标题似乎表明你的回购协议没有提交 在这种情况下:
- 不幸的是,如果
上的某些更改没有被暂存(例如:在您运行的最后一个filename.txt
中不存在),git add filename.txt
没有该文件的副本,您必须查看其他工具才能从磁盘取回该文件(几个IDE保存文件的本地历史记录,或者您可以运行磁盘恢复工具)git
- 但是,暂存的版本(上次运行
git add filename.txt时)仍然存在于
的数据库中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
这将为您提供一个哈希列表,其中一个哈希应该是您文件的内容。该列表将按“最近的第一个”的顺序排序,因此如果运气好,您的最后一个文件将列在第一个文件中
您可以运行
gitshow{hash}
查看散列后面的文件内容,以及gitshow{hash}>从死的.txt中返回,将其还原到磁盘上的文件。您以前是否添加过文件名.txt?如果是这样,您可能可以从git的对象存储中恢复该文件。改为尝试git reset--hard
。假设您从未进行任何提交,则只有在vario上运行git add
才能从git获取数据us文件。您将丢失文件名。如果您甚至没有运行git add
,请尝试一些非git解决方案,例如编辑器备份、macOS Time Machine等。我会遇到以下致命错误:参数“head”不明确:未知修订或路径不在工作树中。请尝试git reset--hard
。但是如果您从未提交ted您的文件,这将无法工作,并且文件无法恢复。似乎因为我没有提交,所以无法恢复它们,无论如何,谢谢。请始终使用大写拼写HEAD
(或者,如果您不想麻烦,请使用@
).小写版本有时有效,有时无效。在这种特殊情况下,当没有提交时,两个版本都不起作用…谢谢,这给了我一个txt中的所有文件,但它是有意义的!毕竟没有丢失!