如我所见,git --track
和--set-upstream-to
都修改了一个分支,因此它变成了一个跟踪(或上游)分支。但是我无法理解哪里有细微的差别。 --track
记录“本地远程分支跟踪”:
$ git checkout foo -b
$ git branch --track origin/retarget
Branch origin/retarget set up to track local branch foo.
$ cat .git/config
[branch "origin/retarget"]
remote = .
merge = refs/heads/foo
当
--set-upstream-to
记录“本地分支跟踪远程分支”时:$ git checkout foo -b
$ git branch --set-upstream-to origin/retarget
Branch foo set up to track remote branch retarget from origin.
$ cat .git/config
[branch "foo"]
remote = origin
merge = refs/heads/retarget
两者有什么区别?我确定“跟踪分支”是一个简单的概念,在分支内附加了
upstream
指针,用于跟踪head
存储库中指定分支的remote
位置。但是,看起来要复杂得多吗? 最佳答案
$ git checkout foo -b
$ git branch --track origin/retarget
前两个命令指示git执行以下操作:
origin/retarget
”的本地分支(这是一个非常糟糕的主意,因为它被称为远程跟踪分支”,而实际上它是一个简单的本地分支,其名称中带有“/
”)foo
”,另一个本地分支)参见
git branch
--track
从远程跟踪分支开始创建分支时,将使用跟踪。
换句话说,您的第一个示例不是
--track
的用法。这样会更好:
git checkout -b foo --track origin/retarget
至于
--track
和--set-upstream-to
之间的区别:--set-upstream-to