【发布时间】:2014-10-13 02:16:06
【问题描述】:
我知道,用 Git 的说法,“分离的 HEAD”对应于符号引用 HEAD 未指向任何分支的状态。例如,我也知道git branch 会告诉我我是否处于 detached-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
案例 1:明确的 detached-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,而是直接提交4d860e9,master也指向;我有一个分离的头。但是,从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 log吗?有一些方法可以判断您是否处于分离的 HEAD 状态,例如使用git symbolic-ref HEAD。 -
@GregHewgill 是的,我知道
git symbolic-ref,但我特别想问的是git log/git show。 -
+1 表示图片
-
这将在 Git 2.4(2015 年第二季度)中实现。见my answer below
标签: git git-log git-detached-head