我怎样才能让git向我展示哪些分支正在跟踪什么?
我知道我可以做git branch --all这一切都显示了我本地和远程分支,但它并没有用于向我展示它们之间的关系。 
如何以显示哪个本地分支正在跟踪哪个远程的方式列出分支?
非常多的瓷器命令,如果你想要这个脚本的话不是很好:
 git branch -vv # doubly verbose! 
请注意,在git 1.8.3中,上游分支显示为蓝色 (请参阅“ git中的分支跟踪(如果有的话)是什么? ”)
如果你想要干净的输出,请参阅arcresu的答案 – 它使用了一个我最初写这个答案的时候并不相信的瓷器命令,所以它更简洁一些,并且configuration了分支的分支,而不仅仅是合并。
 git remote show origin 
用你的遥控器的名字replace'origin'。
  kubi的答案的替代方法是查看显示本地存储库configuration的.git/config文件: 
 cat .git/config 
 如果你看一下git-rev-parse的手册页,你会看到下面的语法描述: 
<branchname>@{upstream},例如master@{upstream},@{u}branchname(short form
<branchname>@{u})的后缀@{upstream}引用branchname指定的分支被设置为在其之上构build的分支。 缺less的branchname默认为当前的。
 因此,要find分支master的上游,你可以这样做: 
 git rev-parse --abbrev-ref master@{upstream} # => origin/master 
要打印每个分支的信息,你可以做一些事情:
 while read branch; do upstream=$(git rev-parse --abbrev-ref $branch@{upstream} 2>/dev/null) if [[ $? == 0 ]]; then echo $branch tracks $upstream else echo $branch has no upstream configured fi done < <(git for-each-ref --format='%(refname:short)' refs/heads/*) # Output: # master tracks origin/master # ... 
这比手动parsing引用和configuration更清洁。
对于目前的分支,这里有两个很好的select:
 % git rev-parse --abbrev-ref --symbolic-full-name @{u} origin/mainline 
要么
 % git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD) origin/mainline 
这个答案也在这里 ,一个稍微不同的问题是(错误地)标记为重复。
 git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads 
将为每个本地分支显示一行。 跟踪分支将如下所示:
 master <- origin/master 
一个非跟踪的将如下所示:
 test <- 
 对于当前的分支,你也可以说git checkout (没有任何分支)。 对于当前分支来说,如果存在跟踪信息,这是一个没有操作的副作用。 
 $ git checkout Your branch is up-to-date with 'origin/master'. 
我使用这个别名
 git config --global alias.track '!f() { ([ $# -eq 2 ] && ( echo "Setting tracking for branch " $1 " -> " $2;git branch --set-upstream $1 $2; ) || ( git for-each-ref --format="local: %(refname:short) <--sync--> remote: %(upstream:short)" refs/heads && echo --Remotes && git remote -v)); }; f' 
然后
 git track 
基于Olivier Refalo的回答
 if [ $# -eq 2 ] then echo "Setting tracking for branch " $1 " -> " $2 git branch --set-upstream $1 $2 else echo "-- Local --" git for-each-ref --shell --format="[ %(upstream:short) != '' ] && echo -e '\t%(refname:short) <--> %(upstream:short)'" refs/heads | sh echo "-- Remote --" REMOTES=$(git remote -v) if [ "$REMOTES" != '' ] then echo $REMOTES fi fi 
它只显示本地与轨道configuration。
把它写在一个名为git-track的脚本上,你将得到一个git track命令