Как я вижу, оба 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
. Но кажется ли это намного сложнее?