Ответ 1
$ git rev-parse --abbrev-ref HEAD
master
Это должно работать с Git 1.6.3 или новее.
Я попытался найти специальную команду git для этого, но не смог ее найти. Может ли кто-нибудь предложить что-нибудь короче или быстрее, чем:
git branch | awk '/\*/ { print $2; }'
$ git rev-parse --abbrev-ref HEAD
master
Это должно работать с Git 1.6.3 или новее.
В 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 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, поэтому я использовал:
#> 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'
Для полноты, 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 из Cloud Build, вы можете даже сократить его:
$ echo $BRANCH_NAME
master
Чтобы использовать его, см. Пример кода ниже:
- положить в cloudbuild.yaml
файл с именем cloudbuild.yaml
- запустить репо (в настоящее время поддерживается только GitHub и BitBucket).
steps:
- name: 'gcr.io/cloud-builders/git'
entrypoint: 'bash'
args:
- '-c'
- |
echo $BRANCH_NAME
Кто-то может найти это полезным (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 branch
работает для меня.
Git версия: 2.13.2