Как найти текущую ветку git в отдельном состоянии HEAD

Я могу найти текущее имя ветки git, выполнив одно из следующих действий:

git branch | awk '/^\*/ { print $2 }'
git describe --contains --all HEAD

Но когда в отключенное состояние HEAD, например, на этапе пост-сборки в сборке maven Jenkins (или в Travis git fetch), эти команды не работают.

Мое текущее рабочее решение таково:

git show-ref | grep $(git log --pretty=%h -1) | sed 's|.*/\(.*\)|\1|' | sort -u | grep -v HEAD

Он отображает любое имя ветки, имеющее последнюю фиксацию на его кончике HEAD. Это работает нормально, но я думаю, что у кого-то с более сильным git-fu может быть более красивое решение?

44
задан neu242 20 August 2019 в 07:36
поделиться

2 ответа

Это должно быть более просто теперь с Мерзавцем 2.23 (3 квартал 2019), с тех пор" git branch --list" изученный, чтобы всегда произвести отдельную ГОЛОВУ как первый объект (когда ГОЛОВА отсоединяется, конечно), независимо от локали.
(Который прибывает в [1 114] добавление показа проверенных ответвлений )

можно тогда выдержать сравнение, эта запись с git branch --show-current ( Мерзавец 2.22 )

См. фиксация 28438e8 (18 июня 2019) [1 117] Matthew DeVore (matvore) .
Помог-:
Johannes Schindelin (dscho) , и Jonathan Nieder (artagnon) .
<глоток> (Объединенный [1 120] Junio C Hamano - gitster - в [1 121] фиксация 92f66 фарадеев , 09 июля 2019)

ref-filter: вид отсоединил ГЛАВНЫЕ строки во-первых

, Прежде чем этот патч, "git branch" поместит" (HEAD detached...)" и" (no branch, rebasing...)" строки перед всеми другими ответвлениями в большинстве случаев за исключением при использовании сообщений китайского языка.
zh_CN обычно использование полноширинное" (" символ (кодовая точка FF08) для соответствия полноширинным пропорциям китайских символов и переведенным строкам, которые мы имели, действительно использовало их. Это означало, что отдельная ГЛАВНАЯ строка появилась бы после всех локальных судей и даже после удаленных судей, если бы были какие-либо .

AFAIK, это иногда не издает неприятный звук для наблюдения круглой скобки полуширины в "полноширинном" тексте как на языках CJK, например, когда нет никаких предыдущих символов или после заключенного в скобки фрагмента текста.
Путем удаления круглой скобки из локализуемого текста, мы можем совместно использовать строки с [1 112] и удалить предостерегающий комментарий к переводчикам.

Удаляют ( из локализуемой части сообщений, таким образом, сортировка происходит правильно независимо от локали.

1
ответ дан 4 August 2019 в 11:30
поделиться

Самое короткое я получил работу над конвейерами битоприемника:

git show -s --pretty=%D HEAD | awk '{gsub("origin/", ""); print $2}'
1
ответ дан 26 November 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: