我知道我可以做git分支——所有,它显示了本地和远程分支,但它在显示它们之间的关系时并不是那么有用。

如何以显示哪个本地分支正在跟踪哪个远程的方式列出分支?


当前回答

Git远程显示来源

将“origin”替换为遥控器的任何名称。

其他回答

对于当前的分支,这里有两个不错的选择:

% 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 -v,它会显示当前分支的所有起源和上游。

Git远程显示来源

将“origin”替换为遥控器的任何名称。

这是一个非常瓷的命令,如果你想用它来编写脚本,那就不好了:

git branch -vv   # doubly verbose!

注意,在git 1.8.3中,上游分支显示为蓝色(参见“git中这个分支跟踪(如果有的话)是什么?”)


如果你想要干净的输出,请参阅Carl Suster的答案——它使用了一个瓷器命令,我不相信在我最初写这个答案的时候还存在这个命令,所以它更简洁一点,并且可以与配置为rebase的分支一起工作,而不仅仅是合并。

我用这个别名

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'

then

git track