如何查看哪些Git分支正在跟踪哪个远程/上游分支?我知道我能做到git branch --all,这向我展示了本地和远程分支,但是向我展示它们之间的关系并没有那么有用。如何以显示哪个本地分支正在跟踪哪个远程的方式列出分支?
3 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
如果您查看手册页git-rev-parse,您将看到描述以下语法:
<branchname>@{upstream},例如master@{upstream},@{u}
@{upstream}branchname(简短形式 <branchname>@{u})的后缀是指由branchname指定的分支设置为在其上构建的分支。缺少的branchname默认为当前的。
因此,要找到分支的上游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
# ...
这比手动解析refs和config更干净。
- 3 回答
- 0 关注
- 3622 浏览
添加回答
举报
0/150
提交
取消