Что это за отслеживание веток (если есть) в git?
После создания ветки с помощью --track (или оставив значение по умолчанию, или --notrack), вы позже захотите напомнить о том, что отслеживает ветка. Есть ли способ, кроме поиска по файлу.git/config, показать, что отслеживает ветка?
5 ответов
Использование: git branch -vv
чтобы увидеть, какие ветви отслеживаются, а какие нет.
Обратите внимание, что с git1.8.3 (22 апреля 2013 г.) у вас есть новый способ подчеркнуть ветку upstream:
"
git branch --vv
"научился рисовать название ветви, в которую он интегрируется, другим цветом (color.branch.upstream
, который по умолчанию синий).
C:\prog\git\git>git branch -vv
* master 118f60e [origin/master] Sync with maint
^^^^^^^^^^^^^
|
--- now in blue
Если вы хотите знать для данной ветви, вы можете сделать:
git config --get branch.<branch>.remote
Если он печатает пульт, он что-то отслеживает. Если он ничего не печатает и возвращает ошибку, это не так.
Если вам нужен автоматический доступ к этой информации, вам не следует пытаться анализировать вывод branch -vv
( ответчик)
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
Спасибо за подсказку Cascabel
С помощью следующей команды вы можете получить ветку удаленного отслеживания для конкретной ветки.
git config --get branch.<branch>.merge
Чтобы изменить ветку удаленного отслеживания, вы можете просто изменить это значение конфигурации.
Примечание: это альтернативный способ git branch -vv
(уже ответил здесь)
а также git branch -u
( Сделать существующую ветку Git удаленной?)