Узнайте, какую удаленную ветку отслеживает локальная ветка - PullRequest
705 голосов
/ 05 октября 2008

Смотри также:
Как узнать, какие ветви Git отслеживают, какая ветка удаленного / восходящего потока?

Как узнать, какую удаленную ветку отслеживает локальная ветвь?

Нужно ли анализировать вывод git config, или есть команда, которая сделает это для меня?

Ответы [ 20 ]

9 голосов
/ 27 августа 2015

Другой метод (спасибо, Оссе), если вы просто хотите узнать, существует ли он:

if git rev-parse @{u} > /dev/null 2>&1
then
  printf "has an upstream\n"
else
  printf "has no upstream\n"
fi
7 голосов
/ 07 марта 2016
git branch -r -vv

выведет список всех филиалов, включая удаленные.

2 голосов
/ 22 октября 2018

Если вы хотите найти восходящий поток для любой ветви (в отличие от той, на которой вы находитесь), вот небольшое изменение в ответе @ cdunn2001:

git rev-parse --abbrev-ref --symbolic-full-name YOUR_LOCAL_BRANCH_NAME@{upstream}

Это даст вам имя удаленной ветви для локальной ветви с именем YOUR_LOCAL_BRANCH_NAME.

1 голос
/ 04 апреля 2012

Я использую этот псевдоним

git config --global alias.track '!sh -c "
if [ \$# -eq 2 ]
 then
   echo \"Setting tracking for branch \" \$1 \" -> \" \$2;
   git branch --set-upstream \$1 \$2;
 else
   git for-each-ref --format=\"local: %(refname:short) <--sync--> remote: %(upstream:short)\" refs/heads && echo --URLs && git remote -v;
fi  
" -'

тогда

git track

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

Больше хороших псевдонимов на https://github.com/orefalo/bash-profiles

1 голос
/ 03 мая 2019

Вы можете попробовать это:

git remote show origin | grep "branch_name"

имя_ ветви нужно заменить на вашу ветку

1 голос
/ 05 октября 2008

Я использую EasyGit (a.k.a. "eg") в качестве сверхлегкой обертки над (или вдоль) Git. EasyGit имеет подкоманду «info», которая дает вам все виды супер полезной информации, включая текущую ветку удаленного отслеживания веток. Вот пример (где текущая ветвь называется «foo»):

pknotz@s883422: (foo) ~/workspace/bd
$ eg info
Total commits:      175
Local repository: .git
Named remote repositories: (name -> location)
  origin -> git://sahp7577/home/pknotz/bd.git
Current branch: foo
  Cryptographic checksum (sha1sum): bd248d1de7d759eb48e8b5ff3bfb3bb0eca4c5bf
  Default pull/push repository: origin
  Default pull/push options:
    branch.foo.remote = origin
    branch.foo.merge = refs/heads/aal_devel_1
  Number of contributors:        3
  Number of files:       28
  Number of directories:       20
  Biggest file size, in bytes: 32473 (pygooglechart-0.2.0/COPYING)
  Commits:       62
0 голосов
/ 16 апреля 2019

Списки как локальных, так и удаленных филиалов:

$ git branch -ra

Выход:

  feature/feature1
  feature/feature2
  hotfix/hotfix1
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master
0 голосов
/ 19 октября 2018

Улучшение этого ответа , я придумал эти .gitconfig псевдонимы:

branch-name = "symbolic-ref --short HEAD"
branch-remote-fetch = !"branch=$(git branch-name) && git config branch.\"$branch\".remote || echo origin #"
branch-remote-push  = !"branch=$(git branch-name) && git config branch.\"$branch\".pushRemote || git config remote.pushDefault || git branch-remote-fetch #"
branch-url-fetch = !"remote=$(git branch-remote-fetch) && git remote get-url        \"$remote\" #"  # cognizant of insteadOf
branch-url-push  = !"remote=$(git branch-remote-push ) && git remote get-url --push \"$remote\" #"  # cognizant of pushInsteadOf
0 голосов
/ 09 июля 2015

Следующая команда будет указывать на текущую ветвь удаленного источника

git remote -v

Для добавления удаленного пути,

git remote add origin path_name

0 голосов
/ 12 сентября 2016

Если вы используете Gradle,

def gitHash = new ByteArrayOutputStream()
    project.exec {
        commandLine 'git', 'rev-parse', '--short', 'HEAD'
        standardOutput = gitHash
    }

def gitBranch = new ByteArrayOutputStream()
    project.exec {
        def gitCmd = "git symbolic-ref --short -q HEAD || git branch -rq --contains "+getGitHash()+" | sed -e '2,\$d'  -e 's/\\(.*\\)\\/\\(.*\\)\$/\\2/' || echo 'master'"
        commandLine "bash", "-c", "${gitCmd}"
        standardOutput = gitBranch
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...