我正在使用GitExtentions维护我的存储库.. 长话短说我丢失了我未提交的文件......
我会尝试解释我做了什么以及我记得什么,希望有人可以帮助我...
那时我发现我失去了我正在做的一切...... 你能帮我吗?
HEAD文件的最后3行以下..
702b3507802dd7ffb1ee8f0c1d18da584af912de ff4bdfc3e0e6c2a2133702e081a8c86ae929d1a7 Gabriele <gabbo.spina@gmail.com> 1507034589 +0200 commit: fixed bug in processing pressure
ff4bdfc3e0e6c2a2133702e081a8c86ae929d1a7 ff4bdfc3e0e6c2a2133702e081a8c86ae929d1a7 Gabriele <gabbo.spina@gmail.com> 1507034629 +0200 reset: moving to HEAD
ff4bdfc3e0e6c2a2133702e081a8c86ae929d1a7 702b3507802dd7ffb1ee8f0c1d18da584af912de Gabriele <gabbo.spina@gmail.com> 1507034651 +0200 reset: moving to 702b3507802dd7ffb1ee8f0c1d18da584af912de
答案 0 :(得分:0)
因为您提交了文件,所以应该能够恢复。几乎所有git命令都是非破坏性的,即使它们看起来不是这样。让我们通过这个来完全理解如何恢复:
首先,你有一个带有一些历史记录的回购(导致下面标记为'O'的提交)和一些未提交的文件。但是您提交了文件(下面提交标记为X
)。
... O -- X <--(master)
然后你还原意外提交
... O -- X -- !X <--(master)
现在你的master
头部提交,可能是你的索引和工作树,看起来就像他们在O
那样做了。然后你做了reset
。我承认我不清楚为什么你做了一个恢复和重置 - 他们通常被认为是处理问题的替代方法,每个方面都有利有弊;在这种情况下,reset
有效地撤消revert
。但无论如何,现在你已经
... O <--(master)
\
X -- !X
请注意,即使它们似乎已消失,数据库中仍然存在X
和!X
;由于X
是您正在处理的文件的(意外)提交,因此您可以使用此事实进行恢复。
使用reflog,您可以找到X
的名称。说
git reflog master
你究竟看到的将取决于其他行动是否导致master
移动;所以你查看revert
命令的输出并找到它的reflog名称(类似master@{1}
)。然后你可以做
git checkout master@{1}^ -- .
从意外提交更新索引和工作树,将这些更改重新置于未提交状态。这确实会对变化进行分级,因此您可能希望
git reset HEAD -- .
注意,如果您知道用于它的提交消息,则reflog也可能为X
提交本身提供直接名称。所以有不止一种方法可以做到,但上面应该是一个相当不错的起点。