Les deux commandes ont le même effet ( merci à la réponse de Robert Siemer de l'avoir signalé ).
La différence pratique survient lorsque vous utilisez une branche locale nommée différemment :
git checkout -b mybranch origin/abranchva créer mybranchet suivreorigin/abranch
git checkout --track origin/abranchne créera que ' abranch', pas une branche avec un nom différent.
(C'est, comme commenté par Sebastian Graf , si la branche locale ne pas existait déjà.
Si elle l'a fait, vous auriez besoin git checkout -B abranch origin/abranch)
Remarque: avec Git 2.23 (Q3 2019), cela utiliserait la nouvelle commandegit switch :
git switch -c <branch> --track <remote>/<branch>
Si la branche existe dans plusieurs télécommandes et que l'une d'entre elles est nommée par la checkout.defaultRemotevariable de configuration, nous l'utiliserons à des fins de désambiguïsation, même si la <branch>n'est pas unique sur toutes les télécommandes.
Réglez-le par exemple checkout.defaultRemote=originpour toujours extraire les branches distantes de là si elles <branch>sont ambiguës mais existent sur la télécommande «d'origine».
Ici, ' -c' est le nouveau ' -b'.
Tout d'abord, quelques informations de base: le suivi signifie qu'une branche locale a son ensemble amont défini sur une branche distante:
# git config branch.<branch-name>.remote origin
# git config branch.<branch-name>.merge refs/heads/branch
git checkout -b branch origin/branch volonté:
- créer / réinitialiser
branchau point référencé par origin/branch.
- créer la branche
branch(avec git branch) et suivre la branche de suivi à distance origin/branch.
Lorsqu'une branche locale est démarrée à partir d'une branche de suivi à distance, Git configure la branche (en particulier les entrées de configuration branch.<name>.remoteet branch.<name>.merge) de manière à git pullfusionner de manière appropriée à partir de la branche de suivi à distance.
Ce comportement peut être modifié via l' branch.autosetupmergeindicateur de configuration globale . Ce paramètre peut être remplacé en utilisant les --tracket les --no-trackoptions, et changé par la suite en utilisant git branch --set-upstream-to.
Et git checkout --track origin/branchfera de même que git branch --set-upstream-to):
# or, since 1.7.0
git branch --set-upstream upstream/branch branch
# or, since 1.8.0 (October 2012)
git branch --set-upstream-to upstream/branch branch
# the short version remains the same:
git branch -u upstream/branch branch
Cela définirait également l'amont pour ' branch'.
(Remarque: git1.8.0 le dépréciera git branch --set-upstreamet le remplacera par git branch -u|--set-upstream-to: voir git1.8.0-rc1 annonce )
L'enregistrement d'une succursale en amont pour une succursale locale:
- dire à git de montrer la relation entre les deux branches dans
git statusetgit branch -v .
- ordonne
git pull sans arguments de tirer de l'amont lorsque la nouvelle branche est extraite .
Voir " Comment faire pour qu'une branche git existante suive une branche distante? " Pour en savoir plus.
git pull, alors que certaines succursales demandaient qu'une succursale distante soit utilisée. Il s'avère que si vous, dans votre première fois, extrayez une branche distante que votre pair a créée, git continue et ajoutebranch.<BNAME>.remote=originau gitconfig local. Ce qui vous permet ensuite d'émettregit pull. Cependant, si vous êtes celui qui crée la branchegit checkout -b BNAME, alors git-of course- ne sait pas. Vous devez donc spécifier sa télécommande.