Что это за отслеживание ветвей (если есть) в git?

После создания ветки с --track (или оставления значения по умолчанию или --notrack) вы позже захотите получать напоминания о том, что отслеживает ветка. Есть ли способ, кроме поиска в файле .git/config, показать, что отслеживает ветвь?


person Vincent Scheib    schedule 02.09.2010    source источник


Ответы (5)


Используйте: git branch -vv, чтобы увидеть, какие ветки отслеживаются, а какие нет.

person slebetman    schedule 02.09.2010

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

git config --get branch.<branch>.remote

Если он печатает пульт, он что-то отслеживает. Если он ничего не печатает и возвращает ошибку, это не так.

person Cascabel    schedule 02.09.2010
comment
Это хорошо для получения репозитория, но не получает имя ветки (которое может быть другим) - person Casebash; 09.01.2012
comment
@Casebash: Верно, но это очень редкая ситуация, и если вы знаете, что находитесь в ней, вы можете получить другую переменную конфигурации. Это имеет то преимущество (по сравнению с git branch -vv), что не имеет постороннего вывода (т.е. его можно анализировать машиной). Иногда это будет полезно. - person Cascabel; 09.01.2012
comment
Я добавлю для других людей, что переменная конфигурации для имени ветки branch.fees.merge - person Casebash; 10.01.2012

Обратите внимание, что с git1.8.3 (апрель 22d, 2013), у вас есть новый способ выделить восходящую ветвь:

"git branch --vv" научился окрашивать имя ветки, с которой он интегрируется, в другой цвет (color.branch.upstream, по умолчанию синий).

C:\prog\git\git>git branch -vv
* master 118f60e [origin/master] Sync with maint
                  ^^^^^^^^^^^^^
                       |
                       --- now in blue
person VonC    schedule 23.04.2013
comment
эта часть не окрашена для меня. У меня мак 1.8.4. Кто-нибудь знает, почему? - person dongshengcn; 29.10.2013
comment
@dongshengcn да, мне нравится настройка git config color.ui always: gist.github.com/VonC/972690 #файл-gitconfig-L25 - person VonC; 30.10.2013
comment
Я думаю, что это должно быть git branch -vv в поле для кавычек - person Faramarz Salehpour; 30.01.2017
comment
что означает vv? git-scm.com/docs/git-branch#git-branch --vv - person Tim Boland; 09.03.2017
comment
@TimBoland означает «очень многословный». - person VonC; 09.03.2017

Если вам нужно получить доступ к этой информации в автоматическом режиме, вам следует избегать попыток анализа вывода branch -vv (ответ slebetman).

Git предоставляет набор низкоуровневых команд со стабильными интерфейсами и форматами вывода. Эти команды (называемые «сантехникой») являются предпочтительным интерфейсом для целей «скриптинга». Команда git for-each-ref может предоставить необходимую информацию через токен upstream (доступен в Git 1.6.3 и более поздних версиях):

% git for-each-ref --shell --format='

b=%(refname:short) u=%(upstream:short)
# Make a fancy report or do something scripty with the values.
if test -n "$u"; then
  printf "%s merges from %s\n" "$b" "$u" 
else
  printf "%s does not merge from anything\n" "$b" 
fi

' refs/heads/ | sh
master merges from origin/master
other does not merge from anything
pu merges from origin/pu
person Chris Johnsen    schedule 03.09.2010

Спасибо за подсказку Jefromi

С помощью следующей команды вы можете получить ветку удаленного отслеживания для определенной ветки.

git config --get branch.<branch>.merge

Чтобы изменить ветку удаленного отслеживания, вы можете просто изменить это значение конфигурации.

Примечание: это альтернативный способ git branch -vv (уже ответили здесь)
и git branch -u (Заставить существующую ветку Git отслеживать удаленную ветку?)

person nickel715    schedule 02.11.2016