参见: 如何查看哪个Git分支正在跟踪哪个远程/上游分支?

如何知道本地分支正在跟踪哪个远程分支?

我是否需要解析git配置输出,或者是否有一个命令可以为我做这件事?


当前回答

我认为git branch -av只告诉你你有什么分支,它们在哪个提交,让你推断本地分支正在跟踪哪些远程分支。

Git remote show origin显式地告诉你哪个分支正在跟踪哪个远程分支。下面是一个存储库的输出示例,包含一个提交和一个名为branch的远程分支:

$ git branch -av
* abranch                d875bf4 initial commit
  master                 d875bf4 initial commit
  remotes/origin/HEAD    -> origin/master
  remotes/origin/abranch d875bf4 initial commit
  remotes/origin/master  d875bf4 initial commit

$ git remote show origin
* remote origin
  Fetch URL: /home/ageorge/tmp/d/../exrepo/
  Push  URL: /home/ageorge/tmp/d/../exrepo/
  HEAD branch (remote HEAD is ambiguous, may be one of the following):
    abranch
    master
  Remote branches:
    abranch tracked
    master  tracked
  Local branches configured for 'git pull':
    abranch merges with remote abranch
    master  merges with remote master
  Local refs configured for 'git push':
    abranch pushes to abranch (up to date)
    master  pushes to master  (up to date)

其他回答

本地分支机构及其遥控器。

git branch -vv 

所有分支和跟踪遥控器。

git branch -a -vv

查看本地分支在哪里显式地配置了推和拉。

git remote show {remote_name}

两个选择:

% git rev-parse --abbrev-ref --symbolic-full-name @{u}
origin/mainline

or

% git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"
origin/mainline

你可以试试这个:

git remote show origin | grep "branch_name"

Branch_name需要替换为您的分支

还有另一种方法

git status -b --porcelain

这会给你

## BRANCH(...REMOTE)
modified and untracked files

这将显示你所在的分支:

$ git branch -vv

这将只显示你所在的当前分支:

$ git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)

例如:

myremote/mybranch

您可以找到当前分支所使用的远程URL:

$ git remote get-url $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)|cut -d/ -f1)

例如:

https://github.com/someone/somerepo.git