当我通过Git Extensions将新分支推送到远程存储库时,我收到一条警报,说
The branch {branch name} does not have a tracking reference. Do
you want to add a tracking reference for {branch name}?
什么是跟踪参考?我在Google中只发现了很少的跟踪引用,也没有真正的定义。
当我通过Git Extensions将新分支推送到远程存储库时,我收到一条警报,说
The branch {branch name} does not have a tracking reference. Do
you want to add a tracking reference for {branch name}?
什么是跟踪参考?我在Google中只发现了很少的跟踪引用,也没有真正的定义。
master
origin/master
Answers:
基本思想是,存在纯本地引用(例如,分支,标签),然后存在远程跟踪引用,这些跟踪引用遵循其他存储库中发生的情况。由于Git是分散式的,因此您可以为分支选择一个名称,该名称与远程使用的分支相同,而无需了解另一个,从而使它们的工作完全不同。Git允许您执行此操作,但是它还提供了一种将本地引用链接到远程引用的方法。
例如,考虑以下内容:
% git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/maint
remotes/origin/master
remotes/origin/next
remotes/origin/pu
remotes/origin/todo
下面我们就对分支机构origin
叫next
和todo
。
% git checkout -t remotes/origin/next
Branch next set up to track remote branch next from origin.
Switched to a new branch 'next'
% git branch todo
现在,我们有了一个本地分支next
,该分支跟踪同名的远程分支和一个本地分支,该分支todo
不会随着对的更改而更新remotes/origin/todo
。
本地git分支可以跟踪一个远程分支,这意味着git push和git pull命令将知道默认情况下将跟踪和跟踪中的提交推入和拉出。git status还将告诉您当前正在跟踪的本地分支和远程分支之间的状态。克隆git存储库时,git将向本地master分支添加跟踪引用以跟踪远程master分支。当您从新的远程分支签出时,git会向创建的本地分支添加跟踪引用,以跟踪您签出的远程分支。
但是,如果在本地创建一个新分支,然后将其推送到远程存储库,则必须明确告诉git如果您希望本地分支开始跟踪新的远程分支。在将本地分支推送到远程存储库时,可以使用-u
或--set-upstream
选项进行操作git push -u origin my-new-branch
。
您可以使用以下命令检查本地分支正在跟踪哪些远程分支(如果有),git branch -vv
这是输出的一个小示例。
b1 560eb64 Added file.txt
b2 560eb64 [origin/b2] Added file.txt
b3 b638c18 [origin/r1: ahead 1] Added file3.txt
* master 560eb64 [origin/master] Added file.txt
在这种情况下,我们有地方分支机构master
,b1
,b2
和b3
。该master
分支正在跟踪一个称为的远程分支master
,该b1
分支未在跟踪任何远程分支,该b2
分支正在跟踪一个远程分支,b2
而该b3
分支在跟踪一个远程分支r1
。git branch -vv
还显示与所跟踪分支相关的分支状态。在这里,分支b3
是在跟踪的远程分支之前的1个提交,其他分支与它们各自的远程跟踪的分支是最新的。
因此,如果您创建本地分支并推送到远程存储库,是否要向分支添加跟踪引用?通常,当您将一个新的本地分支推送到远程存储库时,便可以与其他开发人员就某个功能进行协作。如果将跟踪引用添加到本地分支,则可以方便地拉取其他人对该分支所做的更改,因此我想在大多数情况下,您想添加跟踪引用。
尼克·夸兰托(Nick Quaranto)出色的博客git ready有一篇帖子解释了远程跟踪分支:
远程跟踪分支有几个不同的用途:
与远程上的内容相比,它们用于链接您在本地上的内容。
当您使用git pull或git fetch时,他们会自动知道从哪个远程分支获取更改。
更好的是,git status将识别出他在分支的远程版本之前有多少个提交。
是的,您可能想要添加它。在控制台中执行此操作:git branch --set-upstream-to origin / master