Как получить текущее название ветки в Git? - PullRequest
2142 голосов
/ 06 июня 2011

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

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

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

Ответы [ 37 ]

3 голосов
/ 26 апреля 2013
git branch | grep "*" | sed "s/* //" | awk '{printf $0}' | pbcopy

Для непосредственного копирования результата в монтажный картон. Спасибо @ olivier-refalo за начало…

2 голосов
/ 24 августа 2016

Использование более ранних идей;при условии, что sha1 составляет 40 символов;и погоня за ссылками (да, следует удалить строки отладочной печати: -):

git reflog | awk '
$3 == "checkout:" && (sha == "" || sha == $1 ) {
  from=$(NF - 2)
  to=$NF
  print from, to, length(from) > "/dev/stderr"
  if (length(from) != 40) { print from ; exit; }
  sha=substr(from, 1, 7)
  print sha > "/dev/stderr"
}
'

дает необработанный вывод:

$ git status
HEAD detached at 147049c
[...]
$ ./gime-branch.sh
a47be8d2167641088b66bf8f5c2bf7d3da0c642c HEAD^ 40
a47be8d
master HEAD^ 6
master
1 голос
/ 17 января 2019

Используйте git branch --contains HEAD | tail -1 | xargs, это также работает для состояния "отсоединенного HEAD".

1 голос
/ 28 декабря 2017

Просто добавьте следующие строки к вашему ~/.bash_profile:

branch_show() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(branch_show)\[\033[00m\] $ "

Таким образом, вы можете иметь текущее имя филиала в Терминале

Предоставлено Coderwall.com

0 голосов
/ 05 мая 2019

Это можно сделать с помощью одной команды grep, используя режим Perl и \K для сброса буфера соответствия, поэтому вы получите только имя ветви.

$ git branch | grep -oP "^\*\s+\K\S+$"
master
0 голосов
/ 01 февраля 2019

Получить только локальное название филиала:

git status -b -u no | awk 'NR==1{print $3;}'

Получить только имя удаленной ветви:

git status -b -u no | awk 'NR==2{print $6;}'

и git status -b -u no | awk 'NR==2{print $6;}' | tr -d "[.']" для удаления специальных символов из вывода

0 голосов
/ 14 июня 2018

Я знаю, что на этот вопрос уже был дан ответ, но в самой последней версии Git команда git branch открывает список ваших веток в каком-то приглашении, из которого вам нужно выйти. Что меня бесконечно раздражает!

Вот мое исправление: Откройте свой профиль bash и введите его:

#!/bin/bash
git() {
  if [[ $@ == "branch" ]] then
    command git branch -a | grep -v 'remotes'
  else
    command git "$@"
  fi
}

Теперь откройте терминал и протестируйте его, введя следующие команды в git repo:

source ~/.zshrc
git branch 

И вуаля! Список ваших местных отделений распечатывается в вашем терминале.

Код, который вы пишете в файл bashrc, перезаписывает функцию по умолчанию для git branch и заменяет ее намного более длинной командой, которая перечисляет все локальные ветви с помощью аргумента -a. Затем мы grep выводим лишний ненужный бизнес и распечатываем его. Если вы исключите команду grep, вы все равно получите раздражающее приглашение. Если вы не знакомы с написанием команд bash, ознакомьтесь с этим объяснением: О .bash_profile, .bashrc и где должен быть записан псевдоним?

...