Haw*_*ker 4 git git-remote git-branch git-track
为什么“git remote show origin”将远程分支列为“已跟踪”,即使这些分支没有链接到本地分支以进行拉/推?在这种情况下,“跟踪”是否意味着其他?我认为这就是“跟踪”的全部含义:分支跟踪上的 git docs。
1) 克隆一个包含多个远程分支的 repo
2)运行git remote show origin——说“testBranch”被跟踪。但是git branch -vv正确地只显示 master 跟踪 origin/master,并且git branch -a正确地显示只有一个本地分支 master。
3)那么:git remote show origin将 testBranch 列为“已跟踪”是什么意思?需要明确的是:事情的设置方式没有“错误”:一切正常。我只是不明白为什么远程 testBranch 被标记为“已跟踪”。这就是我想要的答案。
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
Run Code Online (Sandbox Code Playgroud)
在“跟踪”是git remote show提到是从“跟踪”,不同的git branch -vv有关谈判,与发生git checkout -b <branch> <upstream>。(或者也许“不同”这个词太强了,因为基本思想是相同的,它是在谈论您存储库中的远程跟踪分支,而不是您是否有一个本地分支恰好将其中一个作为其上游.)
特别是,git remote show检查fetch =给定遥控器的行,并将其与遥控器上现在实际可用的引用进行比较(运行git ls-remote以查看这些)。
fetch =远程命名的默认行origin读取:
fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)
注意这两个*s。左边的一个匹配遥控器上存在的所有分支,而右边的一个表示“用左边匹配的相同名称替换”。
假设远程origin当前具有以下引用:
refs/heads/master
refs/heads/newbr
refs/tags/v1.2
refs/notes/commits
Run Code Online (Sandbox Code Playgroud)
进一步假设newbr自上次克隆、获取或以其他方式与 remote 交谈以来该分支是新的origin,因此git branch -r只会列出origin/master,而不是origin/newbr。
如果你现在运行git remote show origin你会得到(连同其他东西)这一点:
master tracked
newbr new (next fetch will store in remotes/origin)
Run Code Online (Sandbox Code Playgroud)
这意味着两个分支都匹配,并且您已经拥有refs/remotes/origin/master,但您还没有refs/remotes/origin/newbr。
运行后git fetch,您将获得origin/newbr. 但是,如果在您运行之前git fetch,您更改了您的fetch =行以便您不会获取origin/newbr,git remote show origin则将不再提及它。
| 归档时间: |
|
| 查看次数: |
2849 次 |
| 最近记录: |