为什么在将本地分支推送到远程git repo后跟踪远程分支但本地分支没有上游分支?

时间:2020-06-12 05:57:05

标签: git

将本地分支推送到远程WITHOUT --set-upstream参数后,我发现已跟踪远程分支,但是本地分支没有上游分支。跟踪和上游不是同一意思吗?如果没有,有什么区别?(git版本2.27.0.windows.1)

  1. 创建分支

    $ git分支测试

  2. 将本地分支推送到远程

    $ git checkout测试

    $ git push起源测试

  3. 推动更改,但看起来根本没有上游。

    $ git push

    严重:当前分支测试没有上游分支。 要推送当前分支并将远程设置为上游,请使用 git push --set-upstream原始测试

  4. ,但在远程起源的详细信息中,跟踪了远程分支测试。 enter image description here

跟踪和上游之间有什么区别?我不了解当前状态:跟踪了远程分支,但本地分支没有上游。

2 个答案:

答案 0 :(得分:2)

您显示的命令是git remote show的输出。

请参阅@torek的说明:
“git remote show origin”: why all branches show “tracked” even when some aren't?

此命令“已跟踪”,意味着该分支将下载到本地origin/*引用(注意:文档中未明确说明,并且确实具有误导性)。

如果您想查看“哪个本地分支跟踪哪个远程分支”:

使用git branch -vv,或检查.git/configgit config -l | grep branchgit config --get-regexp '^branch\.')的内容

答案 1 :(得分:1)

tl; dr::您的 local 分支尚未跟踪远程站点,但您的 remote 副本正在跟踪源分支。

详细信息:

有3个水桶:

  1. 您当地的分支机构。
  2. 您的远程分支机构的副本。
  3. 实际的远程分支。

将您的本地分支设置为“跟踪”上游分支将链接#1和#2。从遥控器的角度来看,“已跟踪”表示#2存在并链接到#3。

在命令上下文中:

git remote show origin

“已跟踪”表示您在远程副本中具有该分支的副本。请注意,如果其他人添加了分支并且您尚未提取该分支,则将看到“新”而不是“已跟踪”。首次推出本地分支时,您的 remote 分支开始跟踪原始分支,但是您没有将本地副本设置为跟踪远程分支。如果您完成了“ push -u”操作,您还将把上游跟踪分支设置为远程跟踪。