Показать только текущую ветку в 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

Другие вопросы по тегам