Может ли git log --decorate однозначно сказать, отсоединена ли HEAD?
Я знаю, что на языке Git "отсоединенная ГОЛОВА" соответствует состоянию, в котором символическая ссылка HEAD
не указывает ни на какую ветку. Я тоже знаю что git branch
например, скажет мне, нахожусь ли я в состоянии отсоединенного HEAD, например
* (detached from 9a2ef02)
master
или нет, например
* master
Тем не менее, я хотел бы знать, есть ли способ сделать вывод git log --decorate
совершенно недвусмысленно относительно того, нахожусь ли я в отстраненном состоянии или нет. Вот пример, объясняющий, что я подразумеваю под "однозначным".
пример
Скажи я на master
и моя история выглядит следующим образом:
4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README
Случай 1: однозначное состояние обособленной головы
Если я бегу
git checkout 9a2ef02
тогда вывод git log --decorate --oneline
является
9a2ef02 (HEAD) Correct typo in header
f0badb5 Add to-do section to README
Поскольку ссылка на ветку не указана рядом с HEAD
в этом выводе я точно знаю, что у меня есть отдельная ГОЛОВА.
Случай 2: состояние отсоединенного ГОЛОВА или нет?
Тем не менее, если я бегу
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
справочная страница...
2 ответа
С Git 2.4+ (2 квартал 2015 года), git log --decorate
покажет точную ветвь, связанную с HEAD (или ее отсутствие, для отдельного HEAD).
Смотрите коммит 51ff0f2 от Junio C Hamano ( gitster
):
log
: украшатьHEAD
с названием филиалаВ настоящее время в оформлении журнала не указано, какая ветвь проверена и
HEAD
отстраненКогда филиал
foo
проверено, изменитеHEAD, foo
"часть украшений"HEAD -> foo
Msgstr "Это служит для того, чтобы указать как ссылки на декорации (которым помогает интервал), так и их отношения.Как следствие, "
HEAD
" без всяких "->
"обозначает отдельныйHEAD
сейчас
Это означает, что примечания к выпуску 2.4 теперь включают следующие предупреждения о обратной совместимости:
Выход из "
git log --decorate
" (а также "%d
"спецификатор формата, используемый в пользовательском формате"--format=<string>
"параметр"git log
"семья командных дублей) используется для списка"HEAD
"как и другие подсказки имен веток, разделенные запятой между ними. Например,
$ git log --decorate -1 master
commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD, master)
...
Этот выпуск немного обновляет вывод, когда HEAD ссылается на конец ветви, имя которой также отображается в выводе.
Выше показано как:
$ git log --decorate -1 master
commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD -> master)
...
К сожалению нет. Я продолжаю желать git log
"s --decorate
использовал мой HEAD=
синтаксис. Если это так, вы получите:
4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README
когда вы несете голову под мышкой:
но вы получите это вместо:
4d860e9 (HEAD=master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README
когда вы не в режиме hallowe'en.