git switch
Changer de branche
La commande 'git switch' vous place sur une autre branche : HEAD la suit et vos fichiers de travail changent pour correspondre à cette branche. Avec -c, elle crée d’abord la branche. Elle a été ajoutée dans Git 2.23 pour reprendre la moitié « changement de branche » de git checkout, avec des noms plus clairs et des réglages par défaut plus sûrs — elle refuse de changer de branche si cela écraserait vos modifications non committées.
Synopsis
git switch [<options>] <branch>
git switch [<options>] (-c|-C) <new-branch> [<start-point>]
git switch [<options>] --detach [<start-point>]
git switch [<options>] --orphan <new-branch>Options
Choisir la bonne option
switch face à checkout
Les mêmes actions sur les branches, anciennes et nouvelles
| Commande | Équivalent git checkout |
|---|---|
git switch main | git checkout main |
git switch -c feature/login | git checkout -b feature/login |
git switch --detach HEAD~1 | git checkout HEAD~1 |
git switch - | git checkout - |
Exemples
Passer sur une branche
git switch mainAller sur main.
Créer et basculer
git switch -c feature/loginCréer feature/login et s’y placer.
Branche précédente
git switch -Revenir à la branche où vous étiez avant.
Suivre une branche distante
git switch feature/loginSi seule origin/feature/login existe, une branche locale qui la suit est créée.
Exemples de workflows
git switch mainPartir de main
git pullRécupérer le dernier main
git switch -c feature/loginCréer votre branche
git stashMettre les modifications de côté
git switch mainBasculer
git switch - && git stash popRevenir et restaurer les modifications
Dépannage
error: Your local changes to the following files would be overwritten by checkout
Cause : Une modification non committée entre en conflit avec l’autre branche
Committez-la ou mettez-la de côté (stash) d’abord, ou utilisez --discard-changes pour la jeter
fatal: invalid reference: feature/x
Cause : La branche n’existe pas
Créez-la avec git switch -c, ou lancez git fetch si elle existe sur origin
fatal: a branch is expected, got commit
Cause : Vous avez donné un commit, pas une branche
Utilisez git switch --detach <commit>
Astuces et pièges
Bonnes pratiques
- ✓Utilisez git switch pour les branches et git restore pour les fichiers au lieu de git checkout.
- ✓Gardez un statut propre (commit ou stash) avant de changer de branche.
- ✓Faites un pull de main avant d’en créer une nouvelle branche.
Erreurs fréquentes
- ✗Changer de branche avec des modifications non committées et être surpris qu’elles vous suivent sur la nouvelle branche.
- ✗Utiliser git switch <commit> — un commit demande --detach.
- ✗Oublier -c et obtenir "invalid reference" pour une branche qui n’existe pas encore.
FAQ
Pour les branches, il fait le même travail, mais avec des options plus claires, et il ne peut pas toucher aux fichiers par accident.
Git 2.23 ou plus récent.
Elles vous suivent sur la nouvelle branche, sauf en cas de conflit — le changement est alors refusé.