git磁头从*处分离*与在*处分离**

git磁头从*处分离*与在*处分离**,git,git-detached-head,Git,Git Detached Head,我对git并不陌生。我知道什么是分离的头,我可以结帐一个新的分支继续前进。但是今天我看到了一个从消息中分离出来的,而不是在消息中分离出来的。在尝试中止包含2个子模块的回购中的合并时,我的一个子模块陷入此状态: so_is_my_nacho_cheese$ git status HEAD detached from 9733eeb0 nothing to commit, working tree clean 问题1: 从那一部分开始我就被甩了。我习惯于在看到。这个commit指的是什么?这是头

我对git并不陌生。我知道什么是分离的头,我可以结帐一个新的分支继续前进。但是今天我看到了一个从消息中分离出来的
,而不是在
消息中分离出来的
。在尝试中止包含2个子模块的回购中的合并时,我的一个子模块陷入此状态:

so_is_my_nacho_cheese$ git status

HEAD detached from 9733eeb0
nothing to commit, working tree clean
问题1: 从那一部分开始我就被甩了。我习惯于在
看到
。这个commit指的是什么?这是头被移动到无分支机构之前的最后一个地方吗?在我的例子中,提交在子模块reflog中,但它在
HEAD@{7}
下有7层。那似乎不是头最后一次出现的地方。但是,由于这是父模块中中止合并的结果,因此,头部移动的跟踪可能无法理解。从提交中分离的
通常指什么

问题2: 更让我困惑的是,根据git日志,我的头指向子模块中的一个分支:

so_is_my_nacho_cheese$ git log --graph --oneline -n 5

* ba737d3b (HEAD, xdhmoore_pascal) Just to record pascal run
* 5b69ce96 Fix fine_tune_checkpoint_loading
* 21dc78b2 Just docker changes applied to base
* 9733eeb0 (xdhmoore_base) Updating center_net_mobilenet_v2_fpn_feature_extractor to support classification finetuning.
* 63ec7359 Adding float feature to dataset_util

为什么
git status
告诉我我的头已分离(从
9733eeb0
,但不是在什么提交时),而
git log
说它指向
ba737d3b

当分离的
头指向它第一次签出的提交时,
git status
说它在
分离时。然后,如果您进行新的提交或使用
git reset
HEAD
移动到另一个提交,例如它的父级,
git status
表示
已从
分离。然后,如果您将
HEAD
重置回基本提交,
git status
会再次显示
处分离


基本提交记录在
HEAD
的reflog中,
.git/logs/HEAD
中。如果删除
.git/logs/HEAD
git status
会说
当前不在任何分支上,因为它现在找不到基本提交。

据我所知,在指向带有分支的提交时,仍然可以有一个分离的头。如果未分离,日志将显示带有箭头的
HEAD->

独立的: 未分离:
所以Git在这里实际上是非常有用和一致的!因此,我认为from的
意思是“从这一点开始”。谢谢,我仍然无法破译我的reflog历史记录,但这很有帮助。请注意,
git日志
装饰中有用的
HEAD->branch
语法在git 2.10中是新的。如果你使用的是一个非常旧的Git,你不会得到额外的信息,Git只是在附加和分离的情况下说
HEAD,xdhmoore\u pascal
so_is_my_nacho_cheese$ git log -n 1 --oneline --graph

* ba737d3b (HEAD, xdhmoore_pascal) Just to record pascal run
so_is_my_nacho_cheese$ git log -n 1 --oneline --graph

* ba737d3b (HEAD -> xdhmoore_pascal) Just to record pascal run