Original article: Git Switch Branch – How to Change the Branch in Git
Passer d'une branche à une autre est une chose que vous devrez souvent faire dans Git.
Pour ce faire, vous pouvez utiliser la commande git checkout
.
Comment créer une nouvelle branche dans Git
Pour créer une nouvelle branche dans Git, vous devez utiliser la commande git checkout
et y associer le flag -b
avec un nom.
Cela créera une nouvelle branche à partir de l'actuelle. L'historique de la nouvelle branche débutera à l'endroit d'où vous venez sur l'ancienne branche.
En supposant que vous soyez actuellement sur une branche appelée master
:
(master)$ git checkout -b my-feature
Switched to a new branch 'my-feature'
(my-feature)$
Ici vous pouvez voir une nouvelle branche appelée my-feature
créée à partir de la branche master
.
Comment passer à une branche existante dans Git
Pour basculer vers une branche existante, vous pouvez de nouveau utiliser git checkout
(sans le flag -b
) et spécifier le nom de la branche vers laquelle vous voulez basculer:
(my-feature)$ git checkout master
Switched to branch 'master'
(master)$
Il y a aussi un raccourci pratique pour retourner à la branche précédente en ajoutant -
à git checkout
au lieu du nom de la branche:
(my-feature)$ git checkout -
Switched to branch 'master'
(master)$ git checkout -
Switched to branch 'my-feature'
(my-feature)$
Comment basculer sur un commit spécifique
Pour basculer sur un commit spécifique, vous pouvez aussi utiliser git checkout
et ajouter le SHA du commit au lieu du nom de la branche.
Après tout, dans l'historique de Git, les branches sont justes des liens et des enregistrements vers des commits.
Comment trouver le SHA d'un commit
Une façon de trouver le SHA d'un commit est de regarder le log de Git.
Vous pouvez accéder au log de Git grâce à la commande git log
:
(my-feature)$ git log
commit 94ab1fe28727b7f8b683a0084e00a9ec808d6d39 (HEAD -> my-feature, master)
Author: John Mosesman <johnmosesman@gmail.com>
Date: Mon Apr 12 10:31:11 2021 -0500
This is the second commmit message.
commit 035a128d2e66eb9fe3032036b3415e60c728f692 (blah)
Author: John Mosesman <johnmosesman@gmail.com>
Date: Mon Apr 12 10:31:05 2021 -0500
This is the first commmit message.
Sur la première ligne de chaque commit, après le mot commit
, il y a une longue chaîne de caractères et de nombres: 94ab1fe28727...
On l'appelle le SHA. Un SHA est un identifiant unique qui est généré pour chaque commit.
Pour passer à un commit en particulier, vous avez simplement besoin de passer le SHA du commit comme paramètre à git checkout
:
(my-feature)$ git checkout 035a128d2e66eb9fe3032036b3415e60c728f692
Note: switching to '035a128d2e66eb9fe3032036b3415e60c728f692'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 035a128 a
((HEAD detached at 035a128))$
Note
Qu'est-ce que l'état "detached HEAD" ?
Le fait de réaliser un checkout sur un commit particulier vous place dans l'état "detached HEAD."
HEAD
Pour faire simple, HEAD
(un des pointeurs internes qui suit où vous vous trouvez dans l'historique Git) s'est détourné des branches connues, et donc les changements à partir de ce point formeront un nouveau chemin dans l'historique Git.
Git veut s'assurer que c'est ce que vous vouliez faire, il vous donne donc un "espace libre" pour expérimenter—comme expliqué par le message:
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
A partir de cet emplacement, vous avez deux options:
- Expérimenter puis abandonner vos changements en retournant à la branche précédente
- Travailler à partir d'ici et commencer une nouvelle branche à partir de ce point
Vous pouvez utiliser la commande git switch -
pour annuler tout changement et revenir à la branche précédente.
Si vous préférez garder vos changements et continuer à partir d'ici, vous pouvez utiliser git switch -c <new-branch-name>
pour créer une nouvelle branche à partir de ce point.
Conclusion
La commande git checkout
est utile et a plusieurs objectifs.
Vous pouvez l'utiliser pour créer une nouvelle branche, basculer vers une branche, basculer vers un commit particulier, et bien d'autres choses encore.
Si vous avez aimé ce tutoriel, je parle également d'autres sujets comme celui-ci sur Twitter, et écrit sur ces sujets sur mon site.