git switch

Branches et fusions

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>
[ ] facultatif| ou<arg> valeur à remplacer... répétable--flag option

Options

Cliquez sur une option pour la déplier

Débutant (2)

Créer une nouvelle branche sur le commit actuel (ou sur un point de départ donné) et s’y placer.

RecommandéCréer et basculer en une étape

Exemple

git switch -c feature/login

Changer de branche même si cela écrase des modifications non committées ; ces modifications sont jetées.

DéconseilléSupprime en silence les modifications non committées ; mettez-les plutôt de côté (stash)

Exemple

git switch --discard-changes main

Intermédiaire (2)

Comme -c, mais si la branche existe déjà, elle est réinitialisée au point de départ.

Si nécessaireRéinitialise une branche existante — ses anciens commits sont abandonnés

Exemple

git switch -C feature/login

Se placer sur un commit au lieu d’une branche (HEAD détachée), p. ex. pour examiner une ancienne version.

Si nécessaireExaminer un ancien commit sans déplacer aucune branche

Exemple

git switch --detach HEAD~1

Avancé (1)

Créer une nouvelle branche sans historique et retirer les fichiers suivis du disque.

Si nécessaireHistorique séparé, p. ex. une branche gh-pages

Exemple

git switch --orphan docs

Choisir la bonne option

switch face à checkout

Les mêmes actions sur les branches, anciennes et nouvelles

CommandeÉquivalent git checkout
git switch maingit checkout main
git switch -c feature/logingit checkout -b feature/login
git switch --detach HEAD~1git checkout HEAD~1
git switch -git checkout -

Exemples

Passer sur une branche

git switch main

Aller sur main.


Créer et basculer

git switch -c feature/login

Cré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/login

Si seule origin/feature/login existe, une branche locale qui la suit est créée.

Exemples de workflows

1
git switch main

Partir de main

2
git pull

Récupérer le dernier main

3
git switch -c feature/login

Créer votre branche

1
git stash

Mettre les modifications de côté

2
git switch main

Basculer

3
git switch - && git stash pop

Revenir 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

A:

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.

A:

Git 2.23 ou plus récent.

A:

Elles vous suivent sur la nouvelle branche, sauf en cas de conflit — le changement est alors refusé.