我如何从这种 "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
。我应该做的是:
由于我尝试在两个提交之间切换,我最终遇到了 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
。我应该做的是: