262 votes

Différence entre git checkout - origine de la piste / branche et git checkout - origine / branche de la branche b

Est-ce que quelqu'un connaît la différence entre ces deux commandes pour cloner et suivre une branche distante?

 git checkout -b branch origin/branch
git checkout --track origin/branch
 

Je pense que les deux gardent une trace de la branche distante pour que je puisse appliquer mes modifications à la branche d'origine, non?

Y a-t-il des différences pratiques ??

Merci!

348voto

VonC Points 414372

Les deux commandes sont différentes. D'abord, un peu d'histoire: le Suivi signifie qu'une branche locale a sa en amont fixé à une branche distante:

# git config branch.branch.remote origin
# git config branch.branch.merge refs/heads/branch

Ce n'est pas ce git checkout -b branch origin/branch .
Ce que cette commande n'est de créer/reset branch pour le point référencé par origin/branch.

En revanche, les commandes:

 git checkout --track origin/branch
 # or, since 1.7.0
 git branch --set-upstream branch upstream/branch
 # or, since 1.8.0 (October 2012)
 git branch --set-upstream-to branch upstream/branch
 # the short version remains the same:
 git branch -u branch upstream/branch

définissez en amont pour 'branch'.

(Note: git1.8.0 déprécier git branch --set-upstream et de le remplacer avec de l' git branch -u|--set-upstream-to: voir git1.8.0-rc1 annoncer)

Avoir une en amont de la succursale enregistrée pour une succursale locale:

  • indiquer à git pour montrer la relation entre les deux branches en git status et git branch -v.
  • dirige git pull sans arguments à tirer de l'amont lorsque la nouvelle branche est vérifié.

Voir "Comment faire un existant git branch suivre une branche distante?" pour plus d'.

En pratique, la différence vient quand poussant:

  • avant git 1.7.10:

La valeur par défaut de pousser la politique est d'appariement, ce qui signifie que la commande git push branche origine de pousser une branche à un correspondant de "succursale" sur l'origine de l'amont repo, ou allons en créer un s'il n'existe pas.

  • après git1.7.10:

Le défaut de correspondance de la politique peut être modifiée à l'amont simple:
appuyez uniquement la branche courante, et les pousser à la branche git pull tirer de.

Plus sur "qu'est-Ce que le résultat de l' git push origin?".

Dans ce dernier cas, git checkout -b branch origin/branch a fixé pas en amont (seulement un point de départ pour la branche locale pour commencer), donc il n'est pas poussé.

Voir [ANNONCER] Git 1.7.11.rc1 (3 juin 2012):

Un nouveau mode de push, "simple", qui est un croisement entre "current" et "upstream", a été introduit.
"git push" sans refspec va pousser le courant de la branche pour le même nom, au dépôt distant seulement quand il est mis à suivre la branche avec le même nom là-bas.
Le plan est de faire de ce mode de la nouvelle valeur par défaut lors de la poussée.par défaut n'est pas configuré.

5voto

Pat Points 4681

Le livre semble indiquer que ces commandes produisent les mêmes effets:

Le cas simple est l'exemple que vous venez de le voir, l'exécution de la commande git checkout-b [direction] [remotename]/[direction]. Si vous avez Git version 1.6.2 ou plus tard, vous pouvez aussi utiliser l'option --piste abrégée:

$ git checkout --track origin/serverfix 
Branch serverfix set up to track remote branch serverfix from origin. 
Switched to a new branch 'serverfix' 

Pour configurer une branche locale avec un nom différent de l' branche distante, vous pouvez facilement utiliser la première version avec un autre local nom de la branche:

$ git checkout -b sf origin/serverfix

C'est particulièrement utile lorsque votre bash ou oh-my-zsh git complétions sont en mesure de tirer l' origin/serverfix nom pour vous - il suffit d'ajouter --track (ou -t) et vous êtes sur votre chemin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X