参见: 如何查看哪个Git分支正在跟踪哪个远程/上游分支?
如何知道本地分支正在跟踪哪个远程分支?
我是否需要解析git配置输出,或者是否有一个命令可以为我做这件事?
参见: 如何查看哪个Git分支正在跟踪哪个远程/上游分支?
如何知道本地分支正在跟踪哪个远程分支?
我是否需要解析git配置输出,或者是否有一个命令可以为我做这件事?
当前回答
在尝试了这里所有的解决方案后,我意识到没有一个解决方案在所有情况下都是好的:
在当地分公司工作 分离分支的工作 在CI公司工作
该命令获取所有名称:
git branch -a --contains HEAD --list --format='%(refname:short)'
对于我的应用程序,我必须过滤掉HEAD和master引用,更喜欢远程引用,并去掉单词“origin/”。然后如果没有找到,使用第一个没有/或a(的非HEAD引用。
其他回答
更新:好吧,自从我发布这篇文章已经有好几年了!为了比较HEAD和上游,我现在使用@{u},这是一个指向上游跟踪分支的HEAD的快捷键。(见https://git-scm.com/docs/gitrevisions#gitrevisions-emltbranchnamegtupstreamemegemmasterupstreamememuem)。
原来的答案:我也遇到过这个问题。我经常在一个存储库中使用多个遥控器,很容易忘记当前的分支正在跟踪哪个遥控器。有时候知道这个很方便,比如当你想通过git log remotename/branchname..HEAD查看你的本地提交。
所有这些东西都存储在git配置变量中,但是你不需要解析git配置输出。如果调用git配置时,后面跟着一个变量的名称,它将只打印该变量的值,不需要解析。考虑到这一点,这里有一些命令来获取有关当前分支跟踪设置的信息:
LOCAL_BRANCH=`git name-rev --name-only HEAD`
TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge`
TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote`
REMOTE_URL=`git config remote.$TRACKING_REMOTE.url`
在我的例子中,因为我只对找出当前遥控器的名称感兴趣,所以我这样做:
git config branch.`git name-rev --name-only HEAD`.remote
我不知道这是否算作解析git配置的输出,但这将确定master正在跟踪的远程服务器的URL:
$ git config remote.$(git config branch.master.remote).url
下面的命令将远程原点电流叉指的是
Git remote -v
添加远程路径时,
Git远程添加原始路径_name
你可以试试这个:
git remote show origin | grep "branch_name"
Branch_name需要替换为您的分支
您可以使用git签出,即。“签出当前分支”。如果存在当前分支的跟踪信息,这是一个没有副作用的操作。
$ git checkout
Your branch is up-to-date with 'origin/master'.