Вопрос: Как получить текущее название ветки в Git?


Я из фона Subversion и, когда у меня была ветка, я знал, над чем я работал, с «Эти рабочие файлы указывают на эту ветку».

Но с Git я не уверен, когда редактирую файл в NetBeans или Notepad ++, независимо от того, привязан ли он к мастеру или другой ветке.

Нет проблем с gitв bash, он говорит мне, что я делаю.


1664


источник


Ответы:


git branch

должен показать все локальные филиалы вашего репо. Разделяемая ветка - это ваша текущая ветка.


1245



git rev-parse --abbrev-ref HEAD

Это отобразит текущую ветку.

Справка:


3546



У вас также есть git symbolic-ref HEADкоторый отображает полный refspec.

Чтобы показать только название ветки в Git v1.8 и более поздних версиях (спасибо Greg за то, что указали это):

$ git symbolic-ref --short HEAD

В Git v1.7 + вы также можете:

$ git rev-parse --abbrev-ref HEAD

Оба должны указывать одно и то же имя ветки, если вы находитесь на ветке. Если вы находитесь в отдельной голове, ответы различаются.

Заметка:

На более раннем клиенте это работает:

$ git symbolic-ref HEAD | sed -e "s/^refs\/heads\///"

- Дариен 26. Март 2014


394



Для моей справки (но это может быть полезно для других) я сделал обзор большинства (базовых команд), упомянутых в этом потоке, каждый из которых применяется к нескольким прецедентам: HEAD (указывает на):

  • местный филиал (мастер)
  • удаленная ветка отслеживания, синхронизированная с локальной ветвью (начало / мастер с тем же фиксацией, что и главный)
  • удаленная ветка отслеживания, не синхронизированная с локальной ветвью (origin / feature-foo)
  • тег (v1.2.3)
  • общая отсоединенная головка (ни одна из перечисленных выше)

Результаты:

  • git branch | sed -n '/\* /s///p'
    • местное отделение: master
    • удаленная ветка отслеживания (синхронно): (detached from origin/master)
    • удаленная ветка отслеживания (не синхронизирована): (detached from origin/feature-foo)
    • тег: (detached from v1.2.3)
    • общая отдельная головка: (detached from 285f294)
  • git status | head -1
    • местное отделение: # On branch master
    • удаленная ветка отслеживания (синхронно): # HEAD detached at origin/master
    • удаленная ветка отслеживания (не синхронизирована): # HEAD detached at origin/feature-foo
    • тег: # HEAD detached at v1.2.3
    • общая отдельная головка: # HEAD detached at 285f294
  • git describe --all
    • местное отделение: heads/master
    • удаленная ветка отслеживания (синхронно): heads/master(заметка: не remotes/origin/master)
    • удаленная ветка отслеживания (не синхронизирована): remotes/origin/feature-foo
    • тег: v1.2.3
    • общая отдельная головка: v1.0.6-5-g2393761
  • cat .git/HEAD:
    • местное отделение: ref: refs/heads/master
    • все остальные варианты использования: SHA соответствующей фиксации
  • git rev-parse --abbrev-ref HEAD
    • местное отделение: master
    • все остальные варианты использования: HEAD
  • git symbolic-ref --short HEAD
    • местное отделение: master
    • все остальные варианты использования: fatal: ref HEAD is not a symbolic ref

(FYI это было сделано с git версии 1.8.3.1)


166



Еще одна альтернатива:

git name-rev --name-only HEAD

116



Ну достаточно достаточно, я получил его в одном лайнере (bash)

git branch | sed -n '/\* /s///p'

(кредит: ограниченное искупление)

И пока я там, один лайнер для получения удаленной ветви отслеживания (если есть)

git rev-parse --symbolic-full-name --abbrev-ref @{u}

87



You can just type in command line (console) on Linux, in the repository directory:

$ git status

and you will see some text, among which something similar to:

...
On branch master
...

which means you are currently on master branch. If you are editing any file at that moment and it is located in the same local repository (local directory containing the files that are under Git version control management), you are editing file in this branch.


48



git symbolic-ref -q --short HEAD

I use this in scripts that need the current branch name. It will show you the current short symbolic reference to HEAD, which will be your current branch name.


26