可以git log --decorate明确告诉我HEAD是否已分离?

时间:2014-08-19 20:39:57

标签: git git-log git-detached-head

我知道,用Git的说法,"分离了HEAD"对应于符号引用HEAD未指向任何分支的状态。我也知道git branch会告诉我我是否处于分离-HEAD状态,例如。

* (detached from 9a2ef02)
  master

与否,例如

* master

但是,我想知道是否有办法让git log --decorate完全明确的输出关于我是否处于分离-HEAD状态或不。这是一个例子来解释我的意思"明确的"。

enter image description here

实施例

说我master,我的历史记录如下:

4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README

案例1:明确的分离-HEAD状态

如果我跑

git checkout 9a2ef02

然后git log --decorate --oneline的输出是

9a2ef02 (HEAD) Correct typo in header
f0badb5 Add to-do section to README

由于此输出中HEAD旁边没有列出分支引用,因此我确信我已经找到了分离的HEAD。

案例2:是否已分离-HEAD状态?

但是,如果我跑

git checkout 4d860e9

然后HEAD未指向master,而直接提交4d860e9master也指向;我有一个独立的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手册页中找到方法......

2 个答案:

答案 0 :(得分:4)

使用Git 2.4 +(2015年第二季度),git log --decorate将显示与HEAD相关的确切分支(或缺少它,对于分离的HEAD)。

commit 51ff0f2Junio C Hamano (gitster)

  

log:使用分支名称

装饰HEAD      

目前,日志装饰并不表示签出了哪个分支   以及HEAD是否已分离。

     

检出分支foo时,将装饰的“HEAD, foo”部分更改为“HEAD -> foo”。这用于指示ref装饰(由间距帮助)以及它们的关系。

     

因此,“HEAD”没有任何“->”表示已分离HEAD现在


这意味着the 2.4 release notes现在包含以下向后兼容性警告

  

用户格式“git log --decorate”参数“%d”命令系列中使用的“--format=<string>”(和“git log”格式说明符的输出用于列出“HEAD”就像分支名称的其他提示一样,用逗号分隔。 E.g。

$ git log --decorate -1 master
commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD, master)
...
  

当HEAD引用分支的尖端时,此版本稍微更新输出,分支的名称也显示在输出中   以上显示为:

$ git log --decorate -1 master
commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD -> master)
...

答案 1 :(得分:2)

不幸的是,没有。我一直希望git log --decorate使用我的HEAD=语法。如果确实如此,你会得到:

4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README

当你把头放在胳膊下时:

http://image.shutterstock.com/display_pic_with_logo/53755/53755,1189290972,1/stock-photo-a-beheaded-skeleton-carrying-a-glowing-pumpkin-head-under-his-arm-happy-halloween-isolated-on-5188306.jpg

但你会得到这个:

4d860e9 (HEAD=master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README

当你没有处于神圣模式时。