如何在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
    中不存在),
    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
这将为您提供一个哈希列表,其中一个哈希应该是您文件的内容。该列表将按“最近的第一个”的顺序排序,因此如果运气好,您的最后一个文件将列在第一个文件中


您可以运行
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中的所有文件,但它是有意义的!毕竟没有丢失!