我想要一个命令,它可以输出我当前所在分支的名称。类似于:
$ 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
有这样的命令吗?
根据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
。
将会触发被追踪的远程操作:
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
git rev-parse --symbolic-full-name @{u}
命令输出当前分支所对应远程跟踪分支的名称,它会输出类似于refs/remotes/origin/master
的内容。如果忽略掉"refs/remotes"这部分内容,那么它正是所需的结果。 - Lily Ballardgit 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
git branch -vv
% git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)
,但我更喜欢你的。 - cdunn2001-u
标志来执行git push
命令以更改上游跟踪信息。 - Lily Ballard