jub*_*0bs 6 git git-log git-detached-head
我知道,在Git的说法中,"分离的HEAD"对应于符号引用HEAD未指向任何分支的状态.我也知道git branch,例如,会告诉我我是否处于分离-HEAD状态,例如
* (detached from 9a2ef02)
  master
或不,例如
* master
但是,我想知道是否有办法使输出git log --decorate完全明确,我是否处于分离-HEAD状态.这是一个用"明确的"来解释我的意思的例子.

说我在master,我的历史看起来如下:
4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README
如果我跑
git checkout 9a2ef02
那么输出git log --decorate --oneline就是
9a2ef02 (HEAD) Correct typo in header
f0badb5 Add to-do section to README
因为HEAD此输出旁边没有列出分支引用,所以我确信我有一个分离的HEAD.
但是,如果我跑
git checkout 4d860e9
然后HEAD不指向master,但直接提交4d860e9,这master也指向; 我有一个独立的HEAD.但是,从输出中无法判断git log --decorate --oneline,
4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README
因为它和我上场时完全一样master.
有没有办法,通过一些git log选项,消除这种模糊性?我在git-log手册页中找不到方法......
使用 Git 2.4+(2015 年第 2 季度),git log --decorate将显示与 HEAD 关联的确切分支(或者对于分离的 HEAD 则缺少分支)。
请参阅Junio C Hamano的提交 51ff0f2 ( ):gitster
log:HEAD用分支名称装饰目前,日志装饰不指示哪个分支被签出以及是否
HEAD被分离。当分支
foo被签出时,将HEAD, foo装饰的“ ”部分更改为“HEAD -> foo”。这用于指示两个参考装饰(通过间距帮助)以及它们的关系。因此,“
HEAD”没有任何“ ”表示现在->是分离的HEAD。
这意味着2.4 发行说明现在包含以下向后兼容性警告:
“ ” 的输出
git log --decorate(以及%d用户格式“ ”--format=<string>参数“git log”命令系列中使用的“ ”格式说明符)用于列出“HEAD”,就像分支名称的其他提示一样,之间用逗号分隔。例如Run Code Online (Sandbox Code Playgroud)$ git log --decorate -1 master commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD, master) ...当 HEAD 引用其名称也显示在输出中的分支的尖端时,此版本会稍微更新输出。
上图显示为:Run Code Online (Sandbox Code Playgroud)$ git log --decorate -1 master commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD -> master) ...
| 归档时间: | 
 | 
| 查看次数: | 366 次 | 
| 最近记录: |