我签出了先前的提交。我花了几个小时做出许多更改并将其提交。然后我切换到另一个分支。当我切换回以前的提交时,我发现所有更改都已消失。我也没有在历史上看到他们。
换句话说,我做了以下事情:
git checkout bfea631
(先前的提交)git checkout master
git checkout bfea631
(先前的提交)在上面的第2步中,我花了多个小时进行更改,因此能为您提供帮助。
答案 0 :(得分:1)
您可以尝试使用git reflog
查找提交。它显示了您的HEAD
最近去过的地方。
答案 1 :(得分:0)
为什么会发生?
像您一样直接检查提交后,您的HEAD不再连接到分支。 (称为“分离的HEAD状态”)
这意味着进一步的提交将把您检出的提交作为其父提交,并最终形成一个提交链,但是除当前HEAD之外,其他任何东西都未引用该链。
现在,当您签出其他内容(分支或提交)时,提交(或提交链)将处于“悬挂状态”,等待垃圾收集器(取决于设置),但在大多数情况下都不少于90天,因此没有恐慌。
如何重回正轨
但是在垃圾回收发生之前,您可以通过再次检查(退出)将其恢复。要么只是在终端输出中查找,要么已经通过一些git命令(在可能的情况下很快捷!)显示了提交哈希,就像已经建议的那样,刷新日志,其中包含您以前的HEAD职位的历史记录。