参见: 如何查看哪个Git分支正在跟踪哪个远程/上游分支?
如何知道本地分支正在跟踪哪个远程分支?
我是否需要解析git配置输出,或者是否有一个命令可以为我做这件事?
参见: 如何查看哪个Git分支正在跟踪哪个远程/上游分支?
如何知道本地分支正在跟踪哪个远程分支?
我是否需要解析git配置输出,或者是否有一个命令可以为我做这件事?
当前回答
git branch -vv | grep 'hardcode-branch-name'
# "git rev-parse --abbrev-ref head" will get your current branch name
# $(git rev-parse --abbrev-ref head) save it as string
# find the tracking branch by grep filtering the current branch
git branch -vv | grep $(git rev-parse --abbrev-ref head)
其他回答
另一个方法(感谢osse),如果你只是想知道它是否存在:
if git rev-parse @{u} > /dev/null 2>&1
then
printf "has an upstream\n"
else
printf "has no upstream\n"
fi
Git-status瓷器(机器可读)v2输出如下所示:
$ git status -b --porcelain=v2
# branch.oid d0de00da833720abb1cefe7356493d773140b460
# branch.head the-branch-name
# branch.upstream gitlab/the-branch-name
# branch.ab +2 -2
并且只得到上游分支:
$ git status -b --porcelain=v2 | grep -m 1 "^# branch.upstream " | cut -d " " -f 3-
gitlab/the-branch-name
如果分支没有上游,上面的命令将产生一个空输出(或者使用set -o pipefail失败)。
不使用grep只显示当前分支信息:
git branch -vv --contains
这是缩写:
git branch -vv --contains HEAD
如果你当前的HEAD的提交id在其他分支中,这些分支也会显示。
grep 'BRANCH_NAME'
git branch -vv:该部分将显示所有本地分支及其上游分支。
grep 'BRANCH_NAME':它将从分支列表中过滤当前分支。
您可以使用git签出,即。“签出当前分支”。如果存在当前分支的跟踪信息,这是一个没有副作用的操作。
$ git checkout
Your branch is up-to-date with 'origin/master'.