我如何从这种 "no branch" 场景中完全恢复

How do I recover cleanly from this "no branch" scenario

由于我尝试在两个提交之间切换,我最终遇到了 GitExtensions 为我的存储库报告 (no branch) 的情况。这是 git reflog:

的输出

我没有使用分支,或者有意使用。我的最后一次提交是 91d96ff。然后我开始了实验。我检查了之前的提交 (699415c) 并确认工作集已恢复到该提交时的文件(日期戳除外 - 我无法习惯!)。然后我再次签出 91d96ff,然后在这两次提交之间反弹了几次,最后一次签出将头部留在 91d96ff,这是我开始时的位置。自上次提交以来,我对源代码进行了更改。

下面是 GitExtensions 的显示方式:

而且我注意到通常在 Master 旁边的红色小三角形不见了 - 我假设它指示头部的位置(或在这种情况下不存在)。我想我有一个独立的头?

为什么 Git 报告此 "no branch"?从中恢复的干净和正确的方法是什么? GitExtension 的 Reset current branch to here 是我所需要的吗?

我很想知道我可能做了什么才会变成这种状态。

您可能做了相当于签出提交的操作,如下所示:git checkout 91d96ff 这将使您处于分离状态,这就是您的 UI 在报告 [=20= 时的意思].

返回 "normal" 的最佳做法是 git stash 您的本地更改,然后 git checkout master (或您最初使用的任何分支)然后 git stash pop 恢复您​​可能拥有的本地更改。如果有任何冲突,他们会在那个时候呈现给你。

这是因为您有 "checking out" 个不同的提交。

我想我会详细说明产生 OP 的步骤。我一直在为所有 Git 相关的东西使用 GitExtensions。

最初,我的回购状态如下所示,我正在尝试检查早期的提交,所以我右键单击并选择 Checkout revision:

之后的样子是:

请注意显示的 (no branch),并且 master 节点显示为灰色。确认工作集发生的事情是我希望发生的事情后,我然后恢复到原始状态:

这大概让我回到了原来的工作集,但仍然使用 no branch。我应该做的是: