2017-06-20 75 views
0

我意外丢弃了所有未提交的更改。我做了git reflog show恢复意外丢弃的未提交文件

f1bb72c [email protected]{0}: discard: [1d5f4f1a481165c24a46addbef7d74a5de3ff9c6]

我怎么能恢复呢?

+1

可能重复[意外恢复到主,丢失未提交的更改](https://stackoverflow.com/questions/7147680/accidentally-reverted-to-master-lost-uncommitted-changes) – LuFFy

回答

0

如果文件没有被添加到Git(如果你没有做git add),那么Git根本就不知道这些文件。所以你将无法复活它们。

如果您将文件添加到Git但意外删除它们并更新索引到目录的当前状态,您将很难找到您的文件。问题是 - 当文件在Git中时,当前的历史记录中没有对它们的引用,只有压缩的git对象的数量。

但是,如果这些文件是如此珍贵的你,我应该这样做:

  • 查找现在,当你加入他们的一些已知日期之间创建的.git/objects目录中的所有文件(忽略infopack迪尔斯)。
  • 检查每个git对象(连接目录的2个符号和文件的38个符号)并执行git cat -p [hash],直到找到bl​​ob。如果您记住这些文件中的某些独特单词,则可以使用grep
+0

该文件之前添加。我对文件所做的更改已被删除。 – suku

+0

所以这取决于你是否添加了这些变化。 –

0

如果您还没有COMMITED上演,或您所做的更改,有没有办法可以恢复这些更改。

编辑:恢复丢失的变化。在Mark Longair's建议(在评论中)上添加此项。这也包括从他的答案(*)中的几个SO链接,我发现相当丰富。

  • 如果你曾经致力于一些变化,已经失去了承诺(如在分离状态提交),你可以发现,使用提交reflog。看到这SO question *。

  • 如果你已经失去了你最后的上演改变,你也可以恢复。请参阅SO question *。 (我从未使用过或自己尝试过)。

  • 如果您的变化,你也可以恢复使用popapply。 (我不确定弹出/丢弃的窗口是否也可以恢复,但没有提交)。你可能会发现这个Recover dropped stash in git有用。

如果有任何其他方法,任何人都可以建议,我会编辑这个答案进一步添加它们。

+1

不要复制其他地方的内容(https://stackoverflow.com/a/7147749/444991)而没有明确的归属。它被视为剽窃。请参阅http://stackoverflow.com/help/referencing – Matt