git磁头从*处分离*与在*处分离**
我对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指的是什么?这是头
,而不是在
消息中分离出来的。在尝试中止包含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