Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;git remote show origin";:为什么所有的分支机构都显示;“跟踪”;即使有些人不是';T_Git_Git Branch_Git Remote_Git Track - Fatal编程技术网

&引用;git remote show origin";:为什么所有的分支机构都显示;“跟踪”;即使有些人不是';T

&引用;git remote show origin";:为什么所有的分支机构都显示;“跟踪”;即使有些人不是';T,git,git-branch,git-remote,git-track,Git,Git Branch,Git Remote,Git Track,为什么“git remote show origin”将远程分支列为“tracked”,即使这些分支没有链接到本地分支以进行拉/推操作?在这种情况下,“跟踪”是否意味着其他内容?我认为这就是“跟踪”的全部含义 1) 克隆具有多个远程分支的回购 2) 运行git remote show origin——表示跟踪“testBranch”。但是git branch-vv正确地显示了只有一个主机跟踪原点/主机,git branch-a正确地显示了只有一个本地分支master 3) 那么:git remo

为什么“git remote show origin”将远程分支列为“tracked”,即使这些分支没有链接到本地分支以进行拉/推操作?在这种情况下,“跟踪”是否意味着其他内容?我认为这就是“跟踪”的全部含义

1) 克隆具有多个远程分支的回购

2) 运行
git remote show origin
——表示跟踪“testBranch”。但是
git branch-vv
正确地显示了只有一个主机跟踪原点/主机,
git branch-a
正确地显示了只有一个本地分支master

3) 那么:
git remote show origin
将testBranch列为“tracked”是什么意思?需要明确的是:事情的设置方式没有“错”:一切都很好。我只是不明白为什么远程测试分支被标记为“跟踪”。这就是我想要的答案

hawk@Tug:~/temp/TestRepo (master)$ git remote show origin
* remote origin
  Fetch URL: git@github.com:haughki/TestRepo.git
  Push  URL: git@github.com:haughki/TestRepo.git
  HEAD branch: master
  Remote branches:
    master     tracked
    testBranch tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)
hawk@Tug:~/temp/TestRepo (master)$ git branch -vv
* master 8df130e [origin/master] shoulda done this last time
hawk@Tug:~/temp/TestRepo (master)$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/testBranch
git remote show
提到的“跟踪”与
git branch-vv
谈到的“跟踪”不同,后者发生在
git checkout-b
中。(或者“different”这个词太强了,因为基本思想是一样的,它指的是存储库中的远程跟踪分支,而不是您是否有一个本地分支碰巧有一个分支作为其上游。)

特别是,
git remote show
检查给定远程设备的
fetch=
行,并将其与远程设备上现在实际可用的引用进行比较(运行
git ls remote
查看这些引用)

名为
origin
的远程设备的默认
fetch=
行如下:

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
,而不是
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=
行,这样您就不会获得
origin/newbr
git remote show origin
将停止提及它。

git branch-r告诉您什么?@gravetii与
git branch-a
一样的事情(参见上面的输出),仅在没有本地跟踪主分支的情况下。这里没有本地testBranch。谢谢,这是我想的:在git remote show的说法中,“tracked”只是指为给定的远程分支获取了远程跟踪分支,而不是将分支链接到任何本地分支以进行“推/拉”,对吗?是的,而且在大多数情况下,这正是git最初试图表达的“跟踪”或“远程跟踪”分支的意思,只是不同的人和/或文档将其与将某个分支(远程或本地)标记为其他本地分支的“上游”(即,
@{u}
)的概念混为一谈。