--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 的分支名称不存在略有不同;它会查找名称“足够相似”的远程跟踪分支)。
旧的--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 作为其上游。此外,这允许您设置 current 分支的上游,而无需编写当前分支的 name:
git branch --set-upstream-to=origin/master
这更像是其余的git branch 命令(它们都默认在当前分支上工作)。
请注意,旧的set-upstream 和新的set-upstream-to 在分支已经存在后都会被使用。 (此外,如果一只猫在腿上走来走去,用键盘输入这些答案是很困难的 :-))