Sim*_*wsi 62 git git-extensions
当我通过Git Extensions将新分支推送到远程存储库时,我收到一条警报说
The branch {branch name} does not have a tracking reference. Do
you want to add a tracking reference for {branch name}?
Run Code Online (Sandbox Code Playgroud)
什么是跟踪参考?我发现只有少数提到跟踪谷歌的参考文献,没有真正的定义.
Eri*_*ker 28
基本思想是有纯粹的本地引用(例如,分支,标签),然后有远程跟踪引用,它遵循其他repos中发生的事情.因为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
Run Code Online (Sandbox Code Playgroud)
在这里我们有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
Run Code Online (Sandbox Code Playgroud)
现在我们有一个本地分支next
,它跟踪同名和本地分支的远程分支,todo
不会更新更新remotes/origin/todo
.
本地git分支可以跟踪远程分支,这意味着git push和git pull命令将知道默认情况下推送和提取跟踪分支的提交.此外,git status将告知当前本地分支与其正在跟踪的远程分支之间的状态.当您克隆git存储库时,git将向本地主分支添加跟踪引用以跟踪远程主分支.当您从新的远程分支签出时,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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们有地方分支机构master
,b1
,b2
和b3
.该master
分支正在跟踪一个名为的远程分支master
,该b1
分支不跟踪任何远程分支,该b2
分支正在跟踪一个被调用的远程分支b2
,该b3
分支正在跟踪一个名为的远程分支r1
.git branch -vv
还显示与跟踪分支相关的分支的状态.这里的分支b3
在跟踪的远程分支之前是1次提交,而其他分支与它们各自的远程跟踪分支是最新的.
因此,如果您创建本地分支并推送到远程存储库,是否要向分支添加跟踪引用?通常,当您将新的本地分支推送到远程存储库时,您可以在功能上与其他开发人员协作.如果您向本地分支添加跟踪引用,则可以方便地将其他人所做的更改提取到分支,因此我想说在大多数情况下您需要添加跟踪引用.