Там нет никакой разницы вообще!
1) git checkout -b branch origin/branch
Если нет --track
и нет --no-track
, --track
предполагается по умолчанию. Значение по умолчанию можно изменить с помощью настройки branch.autosetupmerge
.
В сущности, 1) ведет себя как git checkout -b branch --track origin/branch
.
2) git checkout --track origin/branch
«Для удобства», --track
без каких-либо -b
последствий, -b
и аргумент, -b
предположительно, является «ответвлением». Догадка определяется переменной конфигурации remote.origin.fetch
.
В сущности, 2) ведет себя как git checkout -b branch --track origin/branch
.
Как видите: без разницы.
Но это становится еще лучше:
3) git checkout branch
также эквивалентно тому, git checkout -b branch --track origin/branch
если «ветвь» еще не существует, но «происхождение / ветвь» существует 1 .
Все три команды устанавливают «восходящий поток» «ветви» как «источник / ветвь» (или они терпят неудачу).
Вверх по течению используется в качестве опорной точки аргумент менее git status
, git push
, git merge
и , таким образом , git pull
(если он сконфигурирован таким образом (который по умолчанию или почти по умолчанию)).
Например git status
, если вы настроены, вам сообщают , насколько далеко вы находитесь позади или впереди.
git push
по умолчанию настроен на передачу текущей ветви вверх по потоку 2, начиная с git 2.0.
1 ... и если «origin» является единственным удаленным устройством, имеющим «ответвление»
2, то по умолчанию (называемое «simple») также обеспечивает одинаковое имя обеих ветвей
git pull
, тогда как некоторые ветви попросили бы удалить удаленную ветку. Оказывается, если вы впервые проверяете удаленную ветку, которую создал ваш пир, gitbranch.<BNAME>.remote=origin
запускается и добавляет локальный gitconfig. Который затем позволяет выпускатьgit pull
. Однако, если вы тот, кто создает веткуgit checkout -b BNAME
, то git, конечно, не знает. Поэтому вы должны указать его удаленный.