Очень фарфоровая команда, не очень хорошая, если вы хотите это для сценариев:
git branch -vv # doubly verbose!
Обратите внимание, что в git 1.8.3 эта ветвь вверх по течению отображается синим цветом (см. « Что это за отслеживание веток (если есть) в git? »)
Если вы хотите получить чистый вывод, посмотрите ответ arcresu - он использует фарфоровую команду, которая, как мне кажется, не существовала в то время, когда я изначально писал этот ответ, поэтому он немного более лаконичен и работает с ветвями, настроенными для rebase, а не просто для слияния.
git remote show origin
Замените «origin» на имя вашего пульта.
источник
git remote show
команда фактически подключается к удаленному репо ... и, следовательно, он потерпит неудачу, если вы оказались вне сети или по какой-либо причине не можете подключиться к репо ...git remote show -n origin
чтобы получить некоторую информацию даже в автономном режиме. Из документации по git remote : «С опцией -n удаленные заголовки сначала не запрашиваются с помощью git ls-remote <name>; вместо этого используется кэшированная информация».git remote show | xargs git remote show -n
чтобы просмотреть объединенную информацию отслеживания для всех пультов.Если вы посмотрите на справочную страницу
git-rev-parse
, вы увидите следующий синтаксис:Следовательно, чтобы найти восходящую ветку
master
, вы должны сделать:Чтобы распечатать информацию для каждой ветви, вы можете сделать что-то вроде:
Это чище, чем разбор ссылок и настроек вручную.
источник
done < <(git for-each-ref --format='%(refname:short)' refs/heads/**)
обратите внимание на две звездочки в конце шаблона glob.git rev-parse --abbrev-ref HEAD@{upstream}
кажется, хорошо работает для текущей ветви. Это также делает для хорошего псевдонима мерзавца.while
Синтаксис цикла выглядит немного странно для меня. Вы можете просто использовать тот,git for-each-ref ... | while read branch; do ...
который не нуждается в FIFO и работает в том же порядке, что и написанные команды.git for-each-ref --format='%(refname:short) tracks %(upstream:short)' refs/heads/*
Альтернатива ответу kubi - взглянуть на
.git/config
файл, который показывает конфигурацию локального репозитория:cat .git/config
источник
git config --get-regex branch
покажет линию для каждого местного филиала. Отслеживающая ветка будет выглядеть так:
Не отслеживающий будет выглядеть так:
источник
git branch -vv
. 🙏git config --global alias.track 'for-each-ref --format='\''%(refname:short) <- %(upstream:short)'\'' refs/heads'
Для текущей ветки есть два хороших варианта:
или
Этот ответ также здесь , на немного другой вопрос, который был (ошибочно) отмечен как дубликат.
источник
git for-each-ref --shell --format='%(refname:short) %(upstream:short)' refs/heads
.Для текущей ветви вы также можете сказать
git checkout
(без любой ветви). Это неоперация с побочными эффектами для отображения информации об отслеживании, если она существует, для текущей ветви.источник
git checkout .
, что не является запретом.Я использую этот псевдоним
тогда
источник
На основании ответа Оливье Рефало
Он показывает только локально с настроенной дорожкой.
Напишите его в сценарии git-track на вашем пути, и вы получите команду git track
Более подробная версия на https://github.com/albfan/git-showupstream
источник
git config --get-regexp "branch\.$current_branch\.remote"
даст вам имя удаленного, который отслеживается
git config --get-regexp "branch\.$current_branch\.merge"
даст вам имя удаленной ветви, которая отслеживается.
Вам нужно заменить $ current_branch на имя вашей текущей ветки. Вы можете получить это динамически с
git rev-parse --abbrev-ref HEAD
Следующий мини-скрипт объединяет эти вещи. Вставьте его в файл с именем
git-tracking
, сделайте его исполняемым и убедитесь, что он находится на вашем пути.тогда вы можете сказать
обратите внимание, что имя удаленной ветви может отличаться от имени вашей локальной ветви (хотя обычно это не так). Например:
как вы можете видеть в коде, ключом к этому является извлечение данных из git config. Я просто использую sed для очистки посторонних данных.
источник
Вот аккуратный и простой. Можно проверить
git remote -v
, который показывает вам все происхождение и восходящий поток текущей ветви.источник