Показать только текущую ветку в Git
Я попытался найти специальную команду git для этого, но не смог ее найти. Может кто-нибудь предложить что-нибудь короче или быстрее, чем:
git branch | awk '/\*/ { print $2; }'
13 ответов
$ git rev-parse --abbrev-ref HEAD
master
Это должно работать с Git 1.6.3 или новее.
С Git 2.22 (Q2 2019) у вас будет более простой подход: git branch --show-current
,
Смотрите коммит 0ecb1fc (25 октября 2018 г.) Дэниелса Умановскиса ( umanovskis
)
(Объединено Юнио С Хамано - gitster
- в коммите 3710f60, 07 марта 2019 г.)
branch
: вводить--show-current
опция отображенияКогда вызывается с
--show-current
,git branch
напечатает текущее имя ветви и прекратит работу.
Только фактическое имя печатается безrefs/heads
,
В отключенном состоянии HEAD ничего не выводится.Предназначен как для написания сценариев, так и для интерактивного / информативного использования.
В отличие отgit branch --list
Для получения имени ветви не требуется никакой фильтрации.
В Git 1.8.1 вы можете использовать команду git symbolic-ref с опцией "--short":
$ git symbolic-ref HEAD
refs/heads/develop
$ git symbolic-ref --short HEAD
develop
Вы можете быть заинтересованы в выводе
git symbolic-ref HEAD
В частности, в зависимости от ваших потребностей и макета вы можете сделать
basename $(git symbolic-ref HEAD)
или же
git symbolic-ref HEAD | cut -d/ -f3-
а затем снова есть .git/HEAD
файл, который также может быть интересен для вас.
Это старая тема, на которую я только что наткнулся. Из того, что я могу сказать, нет никакого способа показать только текущую ветку в GIT, поэтому я использовал:
#> git branch | grep '*'
Я думаю, это должно быть быстро и может быть использовано с API-интерфейсом Python.
git branch --contains HEAD
* master
Я использую
/etc/bash_completion.d/git
Он поставляется с git и предоставляет приглашение с именем ветви и завершением аргумента.
Это не короче, но это касается и отдельных веток:
git branch | awk -v FS=' ' '/\*/{print $NF}' | sed 's|[()]||g'
Для тех, кто любит псевдонимы: поместите следующее в свой .zshrc, чтобы упростить выполнение команд git:
псевдоним gpsu ="git push --set-upstream origin $(git symbolic-ref --short HEAD)"
Для полноты 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
я использую
git name-rev HEAD
получать
HEAD remotes/origin/branch
Просто используя git branch
работает для меня.
Git версия: 2.13.2