Git switch: 5 techniques de pros à connaître
Plus que de simples techniques, ces 5 time-killers peuvent te faire gagner un temps précieux. Je te les ai classées par niveau d'expertise, des plus simples aux plus complexes. Avec tout ça git switch
n'aura plus de secret pour toi 😎
Pour les rédiger j'ai bien sûr utilisé ces capsules de connaissances git uniquement accessibles sur ledevwebmoderne.fr que je ne saurai trop te conseiller:
Technique 1 - Faire un aller retour entre ses branches 🌴 ↔ 🌴
Combien de fois, si ce n’est plusieurs fois par jour, on se retrouve à faire des allers-retours entre nos branches ! On se retrouve alors à enchaîner les commandes, de quoi devenir fou 🤪
⚡️ git switch develop
⚡️ git switch master
⚡️ git switch develop
⚡️ git switch master
...
Et s’il existait un raccourci nous permettant d’aller plus vite ?
C’est justement ce que permet la notation -
qui te repositionne à ta position précédente. 🥳 Plutôt pratique, non ?
⚡️ git switch develop
Switched to branch 'develop'
⚡️ git switch -
Switched to branch 'master'
⚡️ git switch -
Switched to branch 'develop'
Technique 2 - Revenir à sa N-ième position 🎯
Revenir à sa position précédente c’est bien, mais on peut aller encore plus loin. Quand on sait que git conserve l’historique de chacun de nos déplacements, pourquoi alors se limiter à la position précédente !
Et c’est là qu’intervient une notation encore plus puissante, la notation @{-n}
où n correspond à la n-ième position précédente :
⚡️ git switch @{-1} # équivalent à git switch -
⚡️ git switch @{-2} # avant dernière position
⚡️ git switch @{-3} # avant-avant dernière position
...
Technique 3 - Créer une branche locale à partir d’une branche distante 🌴 ⬅ 🌴🌴🌴
Dans un monde où l’on travaille tout seul, on crée une branche en local sur sa machine, on réalise quelques commits, puis on la pousse sur le dépôt distant. Mais dans la vrai vie on est rarement tout seul, on rejoint des projets clients déjà existants et surtout on travaille en équipe. Donc pour aller aider un collègue qui travaille sur une fonctionnalité, il faut déjà récupérer correctement la branche sur laquelle il travaille. Heureusement pour nous git switch
est très bien pensé pour ça et intègre toutes les fonctionnalités dont on a besoin !
Prenons un exemple simple: on a rejoint un nouveau projet et on a sur notre machine que la branche master
. Notre collègue développe une fonctionnalité sur la branche dev
. Pour récupérer cette branche dev
il suffit de lancer:
⚡️ git switch dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
Switched to a new branch 'dev'
Et c’est là que git switch
assure 💪 car:
- il va commencer par détecter que la branche
dev
n’existe pas en local - puis il va de lui-même aller chercher sur le dépôt distant une branche du nom de
dev
-
puis s’il en trouve une:
- crée une branche locale
dev
à partir de la branche distantedev
- et surtout la configure directement pour nous pour que cette branche locale suive la branche distante
- crée une branche locale
- et enfin se positionne dessus, il ne nous reste plus qu’à committer !
Donc juste avec cette commande, une nouvelle branche est créée à l’image de la branche distante et en plus elle est configurée. Ce qui veut dire que pour tirer ou pousser du contenu dessus il suffit de faire git push
ou git pull
.
Technique 4 - Créer une branche locale de nom différent de la branche distante
On est d’accord, pour que les choses restent simples il faut au maximum avoir des noms de branches locales qui correspondent aux noms des branches distantes. Mais parfois il est nécessaire de faire une exception à cette règle. Par chance la solution n’est pas bien compliquée à condition de comprendre les options utilisées:
- l’option
-c
(ou--create
) va nous permettre de créer une nouvelle branche - et l’option
--track
permet d’indiquer le nom de la branche distante à suivre
⚡️ git switch -c dev-client —track origin/dev
Branch ‘dev-client’ set up to track remote branch ‘dev’ from ‘origin’.
Switched to a new branch ‘dev-client’
Ainsi cet exemple permet de:
- créer une nouvelle branche locale
dev-client
- de la configurer pour qu’elle suive la branche distante
origin/dev
(origin
correspondant au nom du dépôt distant) - puis de basculer sur cette nouvelle branche
Avec ça, tu sais tout ce qu’il y a à savoir sur la création de branche avec git switch
.
Technique 5 - Repositionner une étiquette de branche
Cette dernière astuce est vraiment réservée aux experts car même si elle n’est pas bien compliquée, c’est de la dynamite 🧨 et peut avoir des impacts énormes sur le projet.
Techniquement parlant, une branche est ni plus ni moins qu’une “étiquette” qui pointe sur un commit. Et git fait avancer automatiquement cette branche à chaque commit en mettant à jour la référence portée par cette “étiquette”.
Dans cet exemple ta branche master
est en C3
Pour des raisons qui te sont propres tu veux la déplacer en C1
. Pour cela il te faut utiliser l’option -C
(et non -c
) pour forcer la création de branche à un autre endroit de l’historique, ici le commit C1
pointé par HEAD~2
⚡️ git switch -C master HEAD~2
Reset branch 'master'
Tu remarqueras que sur le schéma les commits C2
et C3
apparaissent en gris très clair car ils sont dé-référencés. En effet comme ils ne sont plus accessibles via une étiquette de branche, ils ne sont atteignables que par leur référence SHA-1. Et comme un malheur n’arrive jamais seul, même git log
ne les fait plus apparaitre.
Maintenant que tu connais les impacts de cette commande, tu pourras l’utiliser à bon escient et sans flipper.
Passe à la vitesse supérieure avec les capsules de connaissance git
Si cet article t'a plu, que tu souhaites aller plus loin dans ta compréhension de git et maîtriser la bête une bonne fois pour toutes, fais-toi plaisir avec ces capsules de connaissances git uniquement accessibles sur ledevwebmoderne.fr: