如何恢复被checkout覆盖的git中添加的文件

3

需要帮助!

  1. 我使用“git add”添加了一些文件。
  2. 我想要检出其他文件,但不小心运行了“git checkout -f”。

我知道可以使用reflog等方法找回这些更改,但我不知道该怎么做!我知道可以获取差异。我真的需要这些更改。

有什么想法吗?


1
你可以尝试类似于这个的方法,看看是否能找到一些有用的东西。然而,Makoto是正确的,-f的意思是“相信我,我知道我在做什么”。不要盲目地将其添加到命令中。 - Roman
@R0MANARMY:我承认我有些矛盾,因为在git fsck中找到了OP的解决方案。我认为我的答案并不是很可行,因为有一种恢复的方法。 - Makoto
可能是重复问题:如何恢复因git reset而从索引中删除的文件? - user456814
1
顺便说一句,不错的工作,能够自己解决这个问题,而不是抱怨别人试图关闭你的问题 =)。 - Roman
显示剩余2条评论
1个回答

10

好的,我修复了。已添加到索引中的文件是可以恢复的。只有在文件被添加或存储后才能恢复文件。

以下是步骤:

步骤1:

git fsck −−lost-found

这将为您提供一个悬挂 blob ID 的列表 - 即您添加但在强制检出之前未提交的内容

步骤 2:

git show <ID>

这是与悬空blob相关联的ID。它将文件内容输出到控制台。

就是这样!

这个帖子帮了我:如何从git reset --hard恢复?


2
我真的很自豪你找到了这个答案。我没有意识到 git fsck 还有这个选项。显然我需要花更多时间在 Git 的底层操作上! - Makoto
2
@Makoto 一旦你执行了 git add,你就让 Git “意识到”这些文件的存在,正如解决方案所示。实际上,这是其他已经被问过的问题的重复,只是我很难找到一个好的规范答案,因为它偶尔会出现。 - user456814
那么当你使用 git show 找到文件后,如何检索它呢? - young_souvlaki
你救了我一天,非常感谢! - JonasPTFL

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