Я пытался найти для этого специальную команду Git, но не смог ее найти. Есть ли что-нибудь короче или быстрее, чем следующее?
git branch | awk '/\*/ { print $2; }'
Я пытался найти для этого специальную команду Git, но не смог ее найти. Есть ли что-нибудь короче или быстрее, чем следующее?
git branch | awk '/\*/ { print $2; }'
Ответы:
$ git rev-parse --abbrev-ref HEAD
master
Это должно работать с Git 1.6.3 или новее.
HEAD
, а не ожидалосьmaster
В Git 1.8.1 вы можете использовать команду git symbolic-ref с опцией «--short»:
$ git symbolic-ref HEAD
refs/heads/develop
$ git symbolic-ref --short HEAD
develop
fatal: ref HEAD is not a symbolic ref
при запуске этого как часть сборки
С Git 2,22 (Q2 2019), вы будете иметь более простой подход: git branch --show-current
.
Смотрите коммит 0ecb1fc (25 октября 2018 г.) Дэниелса Умановскиса ( umanovskis
) .
(Слиты Junio C Hamano - gitster
- в фиксации 3710f60 , 07 марта 2019)
branch
: ввести--show-current
опцию отображенияКогда вызвано с
--show-current
,git branch
напечатает текущее имя ветви и завершится.
Только фактическое имя печатается, безrefs/heads
.
В отключенном состоянии HEAD ничего не выводится.Предназначен как для написания сценариев, так и для интерактивного / информативного использования.
В отличие от этогоgit branch --list
, фильтрация не требуется, чтобы просто получить имя ветви.
Вы можете быть заинтересованы в выводе
git symbolic-ref HEAD
В частности, в зависимости от ваших потребностей и макета вы можете сделать
basename $(git symbolic-ref HEAD)
или
git symbolic-ref HEAD | cut -d/ -f3-
и затем снова есть .git/HEAD
файл, который также может представлять интерес для вас.
git rev-parse --symbolic-full-name
до git symbolic-ref
.
basename
или cut
; используйте BR=${BR#refs/heads/}
(где BR - имя переменной, из которой вы сохранили вывод git symbolic-ref HEAD
).
git symbolic-ref --short HEAD
также
Из того, что я могу сказать, нет никакого способа показать только текущую ветку в Git, поэтому я использовал:
git branch | grep '*'
grep '*'
это номинально синтаксическая ошибка. Вы, вероятно, хотите в git branch | sed -n 's/^\* //p'
любом случае. Или на самом деле то, что ОП разместил в первую очередь, что равносильно тому же.
grep '*'
формально это синтаксическая ошибка?
'*'
это регулярное выражение и поэтому оно недопустимо. Вы, вероятно, хотите использовать '[*]'
(то есть символ *
вместо оператора «ноль или более раз»).
grep '\*'
git branch | grep "*" | cut -d' ' -f2
Я думаю, это должно быть быстро и может быть использовано с API-интерфейсом Python:
git branch --contains HEAD
* master
я использую
/etc/bash_completion.d/git
Он поставляется с Git и предоставляет приглашение с именем ветви и завершением аргумента.
$ source /etc//bash_completion.d/git-prompt
File может называться по-разному в разных системах. (Примечание: source
ключевое слово такое же, как и просто .
(точка) в bash.)
Для полноты, echo $(__git_ps1)
по крайней мере в Linux, следует указать имя текущей ветви, заключенное в скобки.
Это может быть полезно в некоторых сценариях, поскольку это не команда Git (хотя и зависит от Git), особенно для настройки командной строки Bash для отображения текущей ветви .
Например:
/mnt/c/git/ConsoleApp1 (test-branch)> echo $(__git_ps1)
(test-branch)
/mnt/c/git/ConsoleApp1 (test-branch)> git checkout master
Switched to branch 'master'
/mnt/c/git/ConsoleApp1 (master)> echo $(__git_ps1)
(master)
/mnt/c/git/ConsoleApp1 (master)> cd ..
/mnt/c/git> echo $(__git_ps1)
/mnt/c/git>
Кто-то может найти это ( ) полезным. Текущая ветвь отмечена знаком *.git show-branch
--current
host-78-65-229-191:idp-mobileid user-1$ git show-branch --current
! [CICD-1283-pipeline-in-shared-libraries] feat(CICD-1283): Use latest version of custom release plugin.
* [master] Merge pull request #12 in CORES/idp-mobileid from feature/fix-schema-name to master
--
+ [CICD-1283-pipeline-in-shared-libraries] feat(CICD-1283): Use latest version of custom release plugin.
+ [CICD-1283-pipeline-in-shared-libraries^] feat(CICD-1283): Used the renamed AWS pipeline.
+ [CICD-1283-pipeline-in-shared-libraries~2] feat(CICD-1283): Point to feature branches of shared libraries.
-- [master] Merge pull request #12 in CORES/idp-mobileid from feature/fix-schema-name to master