Git switch : l'assassin silencieux de git checkout
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 dangereuxgit switch
→ uniquement pour changer ou créer une branche → plus sûrgit 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é.
🌱 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:
- git switch → spécialiste du déplacement dans l'historique
- git restore → spécialiste de l'annulation sur le travail en cours. Je t'explique tout dans cet article : Git restore porte le coup de grâce à git checkout
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
Action | Avant (git checkout ) | Maintenant (git switch ) |
---|---|---|
Changer de branche | git checkout main | git switch main |
Créer une branche | git checkout -b feature | git switch -c feature |
Revenir en arrière | git 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>'
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
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 checkout
→ héritage (à éviter)git switch
→ changer de branche (clair et sûr)git restore
→ annuler 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:
- Change de branche →
git switch main
- Crée une nouvelle branche →
git switch -c test-migration
- 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.
❓ 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
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.