Как получить текущее название филиала в Git'е.

git branch git-branch


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

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

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




Answer 1 roberttdev


git branch

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

Если вы хотите получить только имя ветки,на которой вы находитесь,вы можете это сделать:

git rev-parse --abbrev-ref HEAD



Answer 2 Jistanidiot


Чтобы отобразить текущую ветку,в которой вы находитесь,без других перечисленных ветвей,вы можете сделать следующее:

git rev-parse --abbrev-ref HEAD

Reference:




Answer 3 Wernight


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

Показывать только название ветки в Git v1.8 и более поздних версиях (спасибо Грегу за указание):

git symbolic-ref --short HEAD

На Git v1.7+вы также можете это сделать:

git rev-parse --abbrev-ref HEAD

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

Note:

На более раннем клиенте,похоже,это работает:

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

- Darien 26. март 2014




Answer 4 Stefaan


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

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

Results:

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

(К вашему сведению, это было сделано с помощью git версии 1.8.3.1)




Answer 5 Max


Начиная с версии 2.22 git вы можете просто использовать:

git branch --show-current

В соответствии со страницей "Мужчина":

Выведите имя текущей ветки.В отдельном состоянии HEAD ничего не печатается.