最近我尝试设置我的本地分支feature
来跟踪我的远程分支上的更改,如下所示:
$ git branch --set-upstream feature origin/feature
一切顺利,但我得到了这样的信息:
The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to
我的问题是如何使用track
和set-upstream-to
选项以及它们之间是否存在显着差异?
更新:我使用git
版本1.8.4
答案 0 :(得分:2)
创建新分支时要使用--track
标志:
git branch --no-track foo origin/master # new local foo, with no upstream
git branch --track bar origin/master # new local bar, tracks origin/master
在这两种情况下,你告诉git要创建新的本地分支,当前它指向由第二个参数(这里为origin/master
)标识的提交。然后,分支机构也不会或不会跟踪"跟踪"另一个分支(这意味着git status
会说ahead 2, behind 1
和git pull
等内容会知道要合并的内容。
如果您未指定这两个选项,git branch
会根据您是否为其提供第二个参数来猜测是否跟踪(但另请参阅branch.autosetupmerge
配置标志)。 (这与git checkout
略有不同,其分支名称不存在;这会查找远程跟踪分支,其中包含"类似的#34;名称。
对于参数顺序/展示位置,旧--set-upstream
和新--set-upstream-to
与相同,除外。修复的问题是,要将foo
更改为跟踪origin/master
,您必须写下:
git branch --set-upstream foo origin/master
"看起来像"您要求将origin/master
设置为foo
作为其上游。用:
git branch --set-upstream-to=origin/master foo
很明显,您已将foo
设置为origin/master
作为其上游。此外,这允许您设置当前分支的上游,而无需编写当前分支的名称:
git branch --set-upstream-to=origin/master
更像是剩余的git branch
命令(它们都默认为在当前分支上工作)。
请注意,分支已存在后,将使用旧的set-upstream
和新的set-upstream-to
。 (另外,用猫在膝盖和键盘上行走来输入这些答案很难:-))
答案 1 :(得分:1)
在Git中,跟踪(或具有上游)的分支在存储库配置文件(/.git/config)中具有类似于以下内容的条目
[branch "feature"]
remote = origin
merge = refs/heads/feature
您使用的“--set-upstream”选项已直接替换为“--track”
所以
git branch --track feature origin/feature
此外还有一种新的语法,如
git branch --set-upstream-to=origin/feature feature
以及
git branch -u origin/feature feature
所有表格的功能相同。