Різниці немає взагалі!
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 ... і якщо "походження" є єдиним віддаленим, що має "відділення"
2, за замовчуванням (названим "простим") також примушує обидві назви гілок бути рівними
git pull, тоді як деякі гілки просять витягнутий відділення. Виявляється, якщо ви вперше перевіряєте віддалену гілку, яку створив ваш одноліток, git продовжується і додаєbranch.<BNAME>.remote=originдо локальної gitconfig. Що потім дозволяє оформитиgit pull. Однак, якщо ви створюєте гілкуgit checkout -b BNAME, то git - звичайно, не знає. Тому слід вказати його пульт.