Git switch : l'assassin silencieux de git checkout

Les funérailles de git checkout, où bizarrement le cercueil est vide

Il était une fois git checkout, la commande historique de Git, conçue pour tout faire. Mais comme tous les héros aux pouvoirs trop étendus, elle a fini par causer sa propre perte. Voici l'histoire d'une fin annoncée.

📚 Pour ceux qui aiment lire la doc officielle


(Mais si tu veux comprendre ce qu’il se passe vraiment et éviter les pièges du quotidien, continue à lire 👇)

⚡️ Résumé express

  • git checkout faisait trop de choses → ça le rendait dangereux
  • git switch → uniquement pour changer ou créer une branche → plus sûr
  • git restore → uniquement pour annuler des modifs sur des fichiers

👉 En clair : un job = une commande.

🕵️‍♂️ L'enquête : pourquoi se débarrasser de git checkout ?

git checkout a longtemps été la commande couteau-suisse de Git: changer de branche, créer une branche, annuler des fichiers, restaurer l’historique…

Problème : trop de rôles différents = trop d’erreurs possibles.

Qui n’a jamais :

  • perdu des modifs locales après un checkout mal placé,
  • confondu création de branche et changement de branche,
  • écrasé des fichiers en croyant juste naviguer ?

Bref, git checkout était un piège à dev pressé.

Un couteau suisse qui s'ouvre dans tous les sens de manière chaotique, symbolisant les multiples fonctions confuses de git checkout

🌱 2019 : la naissance de git switch (et de git restore)

Pour corriger ce bazar, les équipes de Git ont enfin introduit en 2019 avec Git 2.23 deux nouvelles commandes:


2019 : l'année où Git a enfin séparé les responsabilités de checkout en deux commandes distinctes et plus sûres

git checkout existe toujours (rétrocompatibilité oblige), mais il est désormais considéré comme héritage.

🌟 Git switch : la nouvelle star du changement de branche

1️⃣ Changer de branche

BASH
# Aller sur la branche main > git switch main # vient remplacer > git checkout main

2️⃣ Créer une nouvelle branche ET s'y placer directement

BASH
# Créer une nouvelle branche feature/auth et aller dessus > git switch -c feature/auth # vient remplacer > git checkout -b feature/auth

3️⃣ Revenir à la branche précédente

BASH
> git switch - # bon ok, ça fonctionnait aussi avec git checkout > git checkout -b nouvelle-branche

📋 Tableau récap

ActionAvant (git checkout)Maintenant (git switch)
Changer de branchegit checkout maingit switch main
Créer une branchegit checkout -b featuregit switch -c feature
Revenir en arrièregit checkout -git switch -

🛡️ Mais git switch va plus loin en sécurisant ton boulot

🚫 Sécurité n°1 : éviter le "detached HEAD" surprise

Avec git checkout, un simple oubli pouvait te mettre en detached HEAD (tu bosses sans branche → commits fantômes 👻).

BASH
> git checkout <commit-sha1> Note: switching to '<commit-sha1>'. 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 <commit-sha1> ✨ Feat: add login form

Avec git switch, impossible de se tromper : il te force à créer une branche ou à explictement demander avec l'option --detach de pointer directement sur un commit.

BASH
# Git va te forcer à créer une branche > git switch <commit-sha1> fatal: a branch is expected, got commit '<commit-sha1>'

Comme un gardien bienveillant, git switch te protège des erreurs en te forçant à créer une branche avant de pouvoir continuer

Pour pointer directement sur un commit, tu dois le demander explicitement avec l'option --detach :

BASH
# Si t'es à l'aise, tu peux le forcer avec l'option `--detach` > git switch --detach <commit-sha1> HEAD is now at <commit-sha1> ✨ Feat: add login form

💥 Sécurité n°2 : éviter l'écrasement de fichiers non sauvegardés

Exemple classique :

BASH
# Le dev voulait changer de branche > git checkout main # Mais tape par erreur : > git checkout main config.js
BOUM ! Comme une explosion qui détruit tout sur son passage, git checkout peut anéantir ton travail non sauvegardé en un instant

Résultat : ton fichier config.js est écrasé, tu viens de perdre tes modifications, et tu n'as pas moyen de les récupérer !

Ah si seulement tu avais utilisé git switch:

BASH
> git switch main config.js # Refusé : Git empêche l'erreur

⚰️ Git checkout est-il vraiment mort ?

Non. La commande existe toujours et continuera de marcher.

Mais pour un dev moderne :

  • git checkouthéritage (à éviter)
  • git switchchanger de branche (clair et sûr)
  • git restoreannuler des fichiers

👉 Même si git checkout fonctionne encore, adopter switch/restore = éviter les pièges et gagner en clarté.

🎯 Next steps: migre vers git switch

Teste dès maintenant dans ton repo:

  1. Change de branche → git switch main
  2. Crée une nouvelle branche → git switch -c test-migration
  3. Annule une modification de fichier (avec restore) → git restore monfichier.ts

🔥 Après 10 minutes, tu ne reviendras plus jamais en arrière.

🏁 Conclusion

git switch n’est pas juste une nouvelle commande : c’est un réglage de compte. En séparant clairement le changement de branche (switch) et la restauration de fichiers (restore), Git a enfin mis fin au chaos causé par checkout.

  • 👉 Retire le vieux couteau suisse de ta boîte à outils.
  • 👉 Prends deux outils spécialisés.
  • 👉 Et tu verras : ton quotidien avec Git devient plus simple, plus sûr, plus lisible.

Git switch a remplacé git checkout, symbolisant la victoire de la nouvelle commande

❓ FAQ Express

Quelle est la différence entre git switch et git checkout ?

git checkout servait à la fois à changer de branche et à restaurer des fichiers, ce qui le rendait confus et risqué. git switch est dédié uniquement au changement de branche → plus clair, plus sûr.

Pourquoi utiliser git switch plutôt que git checkout ?

Parce que git switch limite les erreurs : pas de risque de detached HEAD par accident et pas d’écrasement de fichiers en tapant une mauvaise commande.

git checkout est-il toujours disponible ?

Oui, git checkout existe toujours pour des raisons de compatibilité. Mais il est considéré comme « héritage » et n’est plus recommandé pour un usage courant.

Quand utiliser git restore au lieu de git switch ?

Utilise git restore pour annuler des modifications sur tes fichiers locaux. Utilise git switch uniquement pour naviguer entre les branches.

Depuis quelle version de Git git switch est-il disponible ?

Depuis Git 2.23 (août 2019). Mets à jour ton Git si tu ne l’as pas encore.

🚀 Va plus loin : Maîtrise Git en entreprise avec nos formations sur mesure

Formation Maître Git
Olivier Subirana
Tu viens d'explorer un aspect clé de Git, un outil essentiel pour une gestion de version efficace. Mais la véritable maîtrise de Git, celle qui transforme la productivité de tes équipes et sécurise tes projets, va bien au-delà des commandes individuelles.
Olivier Subirana
En tant que fondateur de formationgit.fr et expert en Git, je propose des formations "Maître Git" exclusivement dédiées aux entreprises. Fini les erreurs coûteuses, les conflits de fusion interminables et les incompréhensions au sein de tes équipes. Nos programmes sont conçus pour s'adapter précisément à tes besoins, que tu sois une startup en pleine croissance ou une grande entreprise avec des défis complexes.

Pourquoi choisir la formation "Maître Git" pour ton entreprise ?

  • Expertise certifiée: Bénéficie de l'expérience d'un formateur spécialisé, capable de démystifier Git pour tous les niveaux.
  • Programmes sur mesure: Chaque formation est adaptée à la culture de ton entreprise, à tes outils et à tes workflows spécifiques.
  • Productivité accrue: Des équipes formées à l'excellence Git travaillent plus vite, avec moins d'erreurs et une meilleure collaboration.
  • Sécurité renforcée: Apprends les bonnes pratiques pour protéger ton historique de code et éviter les pièges courants.

Prêt à transformer la gestion de version de ton entreprise ?

Ne laisse plus les complexités de Git freiner tes projets. Investis dans la compétence de tes équipes et assure une collaboration fluide et efficace.

Olivier Subirana
👉 Contacte-moi dès aujourd'hui pour discuter de tes besoins spécifiques et obtenir une proposition personnalisée pour ta formation "Maître Git" en entreprise.
Demande ta formation "Maître Git"