【问题标题】:How to recover files added to git but overwritten by checkout [duplicate]如何恢复添加到git但被结帐覆盖的文件[重复]
【发布时间】:2014-07-06 21:12:10
【问题描述】:

需要帮助!

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

我确实知道使用 reflog 等可以恢复这些更改,但我不知道如何!我知道有可能获得差异。我真的需要那些改变。

有什么想法吗??

【问题讨论】:

  • 您可以尝试this 之类的方法,看看您是否找到了一些东西。但是,Makoto 是对的,-f 的意思是“相信我,我知道我在做什么”。不要只是盲目地将其添加到命令中。
  • @R0MANARMY:我确实很矛盾,因为在git fsck 中找到了针对 OP 的解决方案。我认为我的答案不是很可行,因为有办法恢复。
  • 顺便说一句,很好地解决了这个问题(或多或少你自己),而不是仅仅抱怨人们试图解决你的问题=)。

标签: git git-branch git-revert git-add git-reflog


【解决方案1】:

好的,我修好了。可以恢复已添加到索引中的文件。只有在添加或隐藏文件时才能恢复文件。

步骤如下:

第 1 步:

git fsck −−lost-found

这将为您提供一个悬空 blob ID 列表 - 您添加但未提交的内容(在执行强制签出之前)

第 2 步:

git show <ID>

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

就是这样!

这个帖子帮助了我:Recover from git reset --hard?

【讨论】:

  • 我真的很自豪你找到了这个答案。我没有意识到git fsck 有一个选项。显然,我需要花更多的时间在管道上!
  • @Makoto 只要你git add,你就会让Git“意识到”这些文件,正如解决方案所展示的那样。这实际上是已提出的其他问题的重复,我只是很难找到一个好的规范问题,因为它往往会时不时地弹出。
  • 那么当你找到带有git show的文件时,如何找回呢?
猜你喜欢
  • 1970-01-01
  • 2013-01-30
  • 2013-10-19
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 1970-01-01
  • 2012-06-02
相关资源
最近更新 更多