Quelle est la différence entre «git branch» et «git checkout -b»?

Réponses:

259

git checkout -b BRANCH_NAMEcrée une nouvelle branche et extrait la nouvelle branche tout en git branch BRANCH_NAMEcréant une nouvelle branche mais vous laisse sur la même branche.

En d'autres termes, git checkout -b BRANCH_NAMEfait ce qui suit pour vous.

git branch BRANCH_NAME    # create a new branch
git checkout BRANCH_NAME  # then switch to the new branch
Fatih Acet
la source
44

git branch crée la branche mais vous restez dans la branche actuelle que vous avez extraite.

git checkout -b crée une branche et la vérifie.

Il pourrait être considéré comme une forme abrégée de:

git branch name
git checkout name
manojlds
la source
Disons plutôt: "git branch crée la branche mais vous restez dans la branche courante FROM WHICH you have check out."
Akash Verma
28
  • git branch: Affiche toutes vos succursales
  • git branch newbranch: Crée une nouvelle branche
  • git checkout -b newbranch: Crée une nouvelle branche et passe immédiatement à cette branche. C'est la même chose que git branch newbranchpour git checkout newbranch.
Michel Pereira
la source
24

Syntaxe complète:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

Le [FROM_BRANCH] est facultatif. S'il n'y a pas FROM_BRANCH, git utilisera la branche courante.

Tuong Le
la source
7

Il y a aussi un autre drapeau à mentionner, qui est relatif à ceux-ci.

git checkout -B BRANCH_NAME

Ceci est une commande très utile que j'ai utilisée récemment. Cette commande extrait la branche que vous spécifiez et réinitialise la branche en fonction de la branche source.

ddavison
la source
2
Pouvez-vous expliquer plus? Je ne sais pas ce que la réinitialisation signifie pour git
Mikaël Mayer
3
Du manuel sur git:If -B is given, <new_branch> is created if it doesn't exist; otherwise, it is reset. This is the transactional equivalent of $ git branch -f <branch> [<start point>] $ git checkout <branch>
ddavison
Vous voulez donc dire que vous pouvez réutiliser une branche existante?
Mikaël Mayer
1
Est-ce checkout -Bdangereux si la branche vers laquelle vous passez est partagée par d'autres? Je l'ai utilisé récemment et il semblait fusionner automatiquement dans les changements de mon autre branche vers la branche vers laquelle je suis passé.
Jeff
si vous récupérez une autre branche de développeurs à distance et effectuez une opération git checkout -Balors oui, elle fusionnerait, voire remplacerait
ddavison
-1

Il existe des formes des deux commandes qui sont similaires (en regardant la documentation de git-scm version 2.11.1):

git branch <branchname> <start-point>

et

git checkout -b <new_branch> <start_point>

Ce dernier exécutant d'abord la commande de branchement puis ajoutant la caisse. Sous cette forme, il fait explicitement référence au document de git-branch:

Si vous spécifiez -b, une nouvelle branche est créée comme si git-branch [2] était appelé puis extrait.

Pshemy108
la source
1
Cela n'ajoute aucune nouvelle information sur la réponse acceptée de 2011.
melpomene
Il ajoute en fait de nouvelles informations sur le <start-point>. Ce que j'ai personnellement trouvé très utile pour créer des branches sur un objet situé ailleurs sans avoir à extraire l'objet au préalable ou à déplacer la branche actuelle. L'utilisation de notations comme [FROM_BRANCH] alors qu'en fait la référence git est signifiée n'est pas utile à mon avis.
Pshemy108
Le deuxième argument facultatif n'est pas pertinent pour la question. C'est la même chose entre les deux commandes, et OP demandait la différence. (Si vous pensez vraiment que c'est essentiel, j'aurais juste ajouté un commentaire à la réponse acceptée.)
melpomene
-1

Essentiellement:

Une branche A-git vous permet de créer une branche simple et simple.

B -git checkout -b vous permet de créer une branche et d'y basculer en même temps.

Quand allez-vous utiliser quoi? 1- git branch lorsque vous souhaitez créer une branche mais rester sur la branche courante. 2- git checkout -b lorsque vous souhaitez créer et basculer. Si vous regardez, il est intuitif de créer une branche et de passer à celle-ci. Donc, c'est à toi de choisir :)

user2238769
la source
4
Cela n'ajoute aucune nouvelle information sur la réponse acceptée de 2011.
melpomene