非常像瓷器命令,如果您希望使用它来编写脚本,则效果不佳:
git branch -vv # doubly verbose!
请注意,在 git 1.8.3 中,上游分支显示为蓝色 (请参阅 “ git 中的此分支跟踪(如果有)是什么? ”)
如果您想要干净的输出,请参阅arcresu 的答案 - 它使用的瓷器命令在我最初编写此答案时不存在,因此它更为简洁,可与配置用于重新设置基准的分支一起使用,而不仅仅是合并。
git remote show origin
用遥控器的名称替换 “origin”。
如果查看git-rev-parse
的手册页,将会看到以下语法说明:
<branchname>@{upstream}
,例如master@{upstream}
,@{u}
分支名称的后缀
@{upstream}
(缩写形式<branchname>@{u}
)是指分支名称所指定的分支设置为在其顶部构建的分支。缺少的分支名称默认为当前分支名称。
因此,要找到分支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
# ...
这比手动解析引用和配置干净。