Подтвердить что ты не робот

Git команда для извлечения имени удаленной ветки отслеживания

Мне нужна команда, которая испускает имя отслеживаемой ветки для ветки, в которой я включен. Что-то вроде:

$ git checkout --track -b topic origin/master
Branch topic set up to track remote branch master from origin.
Switched to a new branch 'topic'
$ git unknown-command
origin/master

Есть ли такая команда?

4b9b3361

Ответ 1

Излучит удаляемый пульт дистанционного управления:

git config branch.<branchname>.remote

Излучит ретрансляцию на этом пульте:

git config branch.<branchname>.merge

Я не считаю, что есть объединенная команда, которая будет излучать обе вместе (по крайней мере, в пределах обычного Git; вы всегда можете сделать свой собственный).


Например, для локальной ветки master:

$ git config branch.master.remote
origin
$ git config branch.master.merge
refs/heads/master

Ответ 2

По запросу Mark Longair мой предыдущий комментарий теперь воспроизводится в качестве ответа.

В последних версиях git вы можете указать имя ветки удаленного отслеживания для текущей ветки с помощью git rev-parse --symbolic-full-name @{u}. Он испускает что-то вроде refs/remotes/origin/master.

Если вы сделаете еще один шаг и используете флаг --abbrev-ref, как в git rev-parse --symbolic-full-name --abbrev-ref @{u}, он отключит бит refs/remotes/ и оставит вас только с коротким именем ветки, например origin/master.

Ответ 3

git config --global alias.show-upstream '!sh -c '\''

    test -n "$1" || set -- HEAD
    set -- "$(git rev-parse --symbolic-full-name "$1")"
    git for-each-ref --format="%(upstream:short)" "$1"


'\'' -'

git show-upstream
git show-upstream HEAD
git show-upstream some/local/branch

Ответ 4

По состоянию на git 1.8.3 вы можете сделать следующее:

git branch -vv 

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