不知何故,我最终得到了一个独立的HEAD。我做了一些提交,它们在我的提交历史中显示为HEAD(但master
后面有几个提交)。然后我试着通过查看master
来修复分离的头部。
现在我没有看到我之前对超级HEAD的承诺。它们永远消失了吗?
答案 0 :(得分:2)
[我之前的承认]是否永远消失了?
没有。即使这些提交没有出现在git log
的输出中,它们仍然存在于您的存储库的内部,您仍然可以检索它们;在这种情况下,reflog是您的安全网。
如果没有更多信息,很难提供一系列肯定会让您免于麻烦的命令,但您可以执行以下操作:
通过运行
打开master
分支的reflog
git reflog master
使用提交消息作为提示,确定您希望master
分支指向的提交;写下(在一张纸上)master
reflog中相应条目的编号。退出reflog。
确保master
是当前分支:
git checkout master
运行
git reset master@{<n>}
其中<n>
代表与感兴趣的提交相对应的reflog条目的编号。
之后,master
应该指向所需的提交,就像你最终得到一个分离的HEAD一样。
答案 1 :(得分:1)
没有。检查reflog(git reflog
)。
答案 2 :(得分:0)
除非你使用Git的石器时代版本,否则它打印出来的信息非常好(这些来自2.2.0,但我认为自1.8.X或更早版本以来就是这样)
当你第一次进入超级头状态时,它应该告诉你如何创建一个分支来处理。
注意:退房&#39; HEAD~1&#39;。
你处于分离头部&#39;州。你可以四处看看,制作 实验更改并提交它们,您可以放弃任何提交 你在这种状态下通过表演而不影响任何分支 另一个结账。
如果您想创建一个新分支来保留您创建的提交,那么 可以通过再次使用-b和checkout命令来执行此操作(现在或稍后)。 例如:
git checkout -b new_branch_name
当你离开头状态时,你应该得到这个消息
警告:你要离开1个提交,而不是连接到任何提交 分支:
27c4eec foo
如果你想通过创建一个新的分支来保留它们,这可能是件好事 时间这样做:
git branch new_branch_name 27c4eec
如果您没有看到这些消息,那么您应该考虑升级您的Git版本。
如果您确实看到了这些消息,请按照打印出的说明进行操作。