-1

不知何故,我最终得到了一个分离的 HEAD。我做了一些提交,它们在我的提交历史中显示为 HEAD(但master后面有几个提交)。然后我试图通过检查来修复分离的头部master

现在我看不到我之前对分离的 HEAD 的提交。他们永远消失了吗?

4

3 回答 3

3

[我以前的提交] 是否永远消失了?

不。即使这些提交没有出现在 的输出中git log,它们仍然存在于您的存储库的内部,您仍然可以检索它们;在这种情况下,reflog就是您的安全网。

如果没有更多信息,很难提供一系列绝对可以让您摆脱困境的命令,但您可以执行以下操作:

  1. 通过运行打开master分支的 reflog

    git reflog master
    
  2. 使用提交消息作为提示,确定您希望master分支指向的提交;写下(在一张纸上)masterreflog 中相应条目的编号。退出 reflog。

  3. 确保master是当前分支:

    git checkout master
    
  4. git reset master@{<n>}
    

    其中<n>代表与感兴趣的提交相对应的 reflog 条目的编号。

之后,master应该指向所需的提交,就像在你最终得到一个分离的 HEAD 之前一样。

于 2014-11-12T18:51:12.930 回答
1

否。请检查 reflog ( git reflog)。

于 2014-11-12T18:32:47.977 回答
0

除非您使用的是石器时代版本的 Git,否则它打印出的消息非常好(这些来自 2.2.0,但我认为它们从 1.8.X 或更早版本开始就是这种方式)

当你第一次进入分离的头部状态时,它应该准确地告诉你如何创建一个分支来工作。

注意:检查“HEAD~1”。

您处于“分离 HEAD”状态。您可以环顾四周,进行实验性更改并提交它们,并且您可以放弃在此状态下所做的任何提交,而不会通过执行另一个签出来影响任何分支。

如果您想创建一个新分支来保留您创建的提交,您可以(现在或以后)再次使用 -b 和 checkout 命令来执行此操作。例子:

git checkout -b new_branch_name

当您离开分离的头部状态时,您应该已经收到此消息

警告:您留下了 1 个提交,未连接到您的任何分支:

27c4eec 富

如果您想通过创建新分支来保留它们,这可能是这样做的好时机:

git 分支 new_branch_name 27c4eec

如果您没有看到这些消息,那么您应该考虑升级您的 Git 版本。

如果您确实看到了这些消息,那么只需按照他们打印的说明进行操作。

于 2014-11-12T19:30:38.787 回答