git命令发出远程跟踪分支的名称

时间:2010-09-21 17:53:51

标签: git branch

我想要一个命令,它为我所在的分支发出被跟踪分支的名称。类似的东西:

$ git checkout --track -b topic origin/master
Branch topic set up to track remote branch master from origin.
Switched to a new branch 'topic'
$ git unknown-command
origin/master

有这样的命令吗?

4 个答案:

答案 0 :(得分:23)

根据Mark Longair的要求,我之前的评论现在被复制为答案。

使用最新版本的git,您可以使用git rev-parse --symbolic-full-name @{u}为当前分支发出远程跟踪分支的名称。它会发出类似refs / remotes / origin / master的内容。

如果你更进一步使用--abbrev-ref标志,就像git rev-parse --symbolic-full-name --abbrev-ref @{u}一样,它将剥离refs/remotes/位,只留下短分支名称,例如origin/master

答案 1 :(得分:14)

将发出正在跟踪的遥控器:

git config branch.<branchname>.remote

将发出在该遥控器上跟踪的引用:

git config branch.<branchname>.merge

我不相信有一个组合命令会一起发出(至少在正常的Git中;你可以随时自己制作)。


例如,对于本地master分支:

$ git config branch.master.remote
origin
$ git config branch.master.merge
refs/heads/master

答案 2 :(得分:5)

git config --global alias.show-upstream '!sh -c '\''

    test -n "$1" || set -- HEAD
    set -- "$(git rev-parse --symbolic-full-name "$1")"
    git for-each-ref --format="%(upstream:short)" "$1"


'\'' -'

git show-upstream
git show-upstream HEAD
git show-upstream some/local/branch

答案 3 :(得分:3)

从git 1.8.3开始,你现在可以这样做:

git branch -vv 

非常方便,因为它一次显示所有本地分支的跟踪分支,但它不适合编写脚本。