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