被“追踪”的那个git remote show
提到的与“跟踪”不同的是git branch -vv
谈论,发生在git checkout -b <branch> <upstream>
。 (或者也许“不同”这个词太重了,因为基本思想是相同的,它谈论的是存储库中的远程跟踪分支,而不是您是否有一个本地分支恰好将其中一个分支作为其上游.)
尤其,git remote show
检查fetch =
给定遥控器的行,并将其与遥控器上现在实际可用的参考进行比较(运行git ls-remote
看到那些)。
默认fetch =
名为远程的行origin
reads:
fetch = +refs/heads/*:refs/remotes/origin/*
注意这两个*
s。左边的匹配遥控器上存在的所有分支,而右边的意味着“用左侧匹配的相同名称替换”。
假设远程origin
目前有以下参考:
refs/heads/master
refs/heads/newbr
refs/tags/v1.2
refs/notes/commits
进一步假设该分支newbr
自上次克隆、获取或以其他方式与远程对话以来是新的origin
, 以便git branch -r
只会列出origin/master
, not origin/newbr
.
如果你现在跑git remote show origin
你会得到(以及其他东西)这一点:
master tracked
newbr new (next fetch will store in remotes/origin)
这意味着两个分支都匹配,并且您已经有了refs/remotes/origin/master
,但你还没有refs/remotes/origin/newbr
.
一旦你跑了git fetch
,你将获得origin/newbr
。但如果在你跑步之前git fetch
,你改变你的fetch =
线让你won't获得origin/newbr
, git remote show origin
就会停止提及它。