Es gibt überhaupt keinen Unterschied!
1) git checkout -b branch origin/branch
Wenn nein --track
und nein vorhanden ist --no-track
, --track
wird dies als Standard angenommen. Die Standardeinstellung kann mit der Einstellung geändert werden branch.autosetupmerge
.
In der Tat verhält sich 1) wie git checkout -b branch --track origin/branch
.
2) git checkout --track origin/branch
"Aus Bequemlichkeit", --track
ohne zu -b
implizieren -b
und das Argument zu -b
wird als "Zweig" vermutet. Das Erraten wird von der Konfigurationsvariablen gesteuert remote.origin.fetch
.
In der Tat verhält sich 2) wie git checkout -b branch --track origin/branch
.
Wie Sie sehen können: kein Unterschied.
Aber es wird noch besser:
3) git checkout branch
ist auch äquivalent zu, git checkout -b branch --track origin/branch
wenn "Zweig" noch nicht existiert, "Ursprung / Zweig" jedoch 1 .
Alle drei Befehle setzen den "Upstream" von "Branch" auf "Origin / Branch" (oder sie schlagen fehl).
Upstream wird als Bezugspunkt Argumentationslos verwendet git status
, git push
, git merge
und somit git pull
(wenn so konfiguriert ist ( dies ist die Standardeinstellung oder fast der Standard)).
ZB git status
sagt Ihnen, wie weit Sie vor oder vor dem Upstream sind, wenn einer konfiguriert ist.
git push
ist so konfiguriert, dass der aktuelle Zweig seit Git 2.0 standardmäßig 2 nach oben verschoben wird.
1 ... und wenn "Ursprung" die einzige Fernbedienung mit "Zweig"
2 ist, erzwingt die Standardeinstellung (mit dem Namen "einfach") auch, dass beide Zweignamen gleich sind
git pull
, während einige Zweige nach einem entfernten Zweig fragten, aus dem ich ziehen konnte. Es stellt sich heraus, dass git weitergeht undbranch.<BNAME>.remote=origin
zur lokalen gitconfig hinzufügt, wenn Sie zum ersten Mal einen von Ihrem Peer erstellten Remote-Zweig auschecken. Womit Sie dann ausstellen könnengit pull
. Wenn Sie jedoch derjenige sind, der den Zweig erstelltgit checkout -b BNAME
, weiß git das natürlich nicht. Sie sollten also die Fernbedienung angeben.