我知道我可以这样做git branch --all
,这向我展示了本地和远程分支,但是向我展示它们之间的关系并没有那么有用.
如何以显示哪个本地分支正在跟踪哪个远程的方式列出分支?
Cas*_*bel 1057
非常多的瓷器命令,如果你想要这个脚本,那就不好了:
git branch -vv # doubly verbose!
Run Code Online (Sandbox Code Playgroud)
请注意,对于git 1.8.3,该上游分支以蓝色显示(请参阅git中的 " 这个分支跟踪(如果有的话)是什么? ")
如果你想要干净的输出,请参阅arcresu的答案 - 它使用了我最初写这个答案时我不相信的瓷器命令,所以它更简洁,适用于为rebase配置的分支,而不仅仅是合并.
kub*_*ubi 239
git remote show origin
将"原点"替换为遥控器的名称.
Car*_*ter 96
如果您查看手册页git-rev-parse
,您将看到描述以下语法:
<branchname>@{upstream}
,例如master@{upstream}
,@{u}
@{upstream}
branchname(简短形式<branchname>@{u}
)的后缀是指由branchname指定的分支设置为在其上构建的分支.缺少的branchname默认为当前的.
因此,要找到分支的上游master
,您可以:
git rev-parse --abbrev-ref master@{upstream}
# => origin/master
Run Code Online (Sandbox Code Playgroud)
要打印出每个分支的信息,您可以执行以下操作:
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
# ...
Run Code Online (Sandbox Code Playgroud)
这比手动解析refs和config更干净.
Abi*_*ern 78
kubi回答的另一种方法是查看.git/config
显示本地存储库配置的文件:
cat .git/config
cdu*_*001 37
对于当前的分支,这里有两个不错的选择:
% git rev-parse --abbrev-ref --symbolic-full-name @{u}
origin/mainline
Run Code Online (Sandbox Code Playgroud)
要么
% git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)
origin/mainline
Run Code Online (Sandbox Code Playgroud)
这个答案也在这里,一个稍微不同的问题被错误地标记为重复.
Aur*_*ien 36
git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads
Run Code Online (Sandbox Code Playgroud)
将为每个本地分支显示一行.跟踪分支将如下所示:
master <- origin/master
Run Code Online (Sandbox Code Playgroud)
非跟踪的看起来像:
test <-
Run Code Online (Sandbox Code Playgroud)
Eug*_*ash 15
对于当前分支,您也可以说git checkout
(没有任何分支).这是一个带有副作用的无操作,用于显示当前分支的跟踪信息(如果存在).
$ git checkout
Your branch is up-to-date with 'origin/master'.
Run Code Online (Sandbox Code Playgroud)
我用这个别名
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'
Run Code Online (Sandbox Code Playgroud)
然后
git track
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
307949 次 |
最近记录: |