按照Git checkout操作恢复被删除的文件

6
我在创建一个新分支之前,意外忘记了 "git add ." 一些我创建的文件,而且所有未暂存的文件都被来自 head 的文件替换了。是否有任何方法可以恢复这些文件?它们既没有被存档,也没有被提交。另外,我没有使用保留文件历史记录的 IDE。我已经了解了 "git fsck --lost-found",但在我尝试之前,是否有其他方法可以将未暂存的文件还原回文件系统中?

1
我不太理解你做了什么。你失去了未暂存的更改吗?通常情况下,Git 会尽力保护它们。例如,如果你在未暂存更改的情况下运行 "git checkout -b name",Git 保留它们。你能否提供详细的步骤说明如何重现你的问题呢? - sleske
目前,恐怕您的问题不太可能得到一个好的答案,因为您所描述的在git中不应该发生(而且我无法重现它)。 - sleske
1
我无法在新的“git init”上重现该问题。这确实是一个非常奇怪的问题。我没有失去未暂存的更改,但本质上失去了代表包的文件夹和其中的源文件。我确切地做了以下事情:1.某个时刻我克隆了一个仓库,从那时起我对已暂存的文件进行了几次提交。2.我将一些文件添加到文件系统中,但没有将它们添加到暂存区。3.我又对已暂存的文件进行了几次提交。4.我使用主分支的HEAD创建了一个新的分支,并且我的未暂存的文件不见了。 - Daniel Z.
我刚刚不小心运行了 git reset --hard 而不是 --soft,这肯定会删除未暂存的更改。起初我认为 git checkout 也有问题,因为我立即切换了分支,但在检查我的命令历史记录后,我意识到发生了什么。对于任何处于同样困境并最终进入此页面的人,这个问题 可能会有所帮助。我能够恢复一些更改,但不是重要的那些 :(。 - Matt Kantor
1个回答

1

很遗憾,目前我还没有找到解决方法。

我曾经用Aptana Studio做过类似的事情,并成功恢复了所有文件。

不管怎样,一个好的实践是保持你的提交尽可能小。这样即使出现意外,你也不会浪费超过30分钟的时间。


等等,什么?我和@sleaske的想法一样。如果Aptana的git集成放弃了git本身不会放弃的更改,那么是Aptana出了问题,而不是git。 - Christopher
有一个有趣的观察是,我一直在使用Eclipse和Git命令行,此时丢失的包/文件仍然在Eclipse中可见,但您无法打开它,因为会出现“检索资源/xxx/xxx/dashboard的内容描述时出错”的错误。此外,“从本地历史记录还原”也不起作用,因为我收到一条消息,告诉我该文件没有本地历史记录。 - Daniel Z.
1
澄清我的回答。我使用Aptana作为编辑器,但在命令行中使用git。由于Aptana保持所有选项卡打开(我一直在编辑的所有文件),所以我只需要再次保存它们。 - hsgubert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接