Comment gérez-vous vos hotfix lorsque vous travaillez sur une branche pour une toute nouvelle feature ?
Plusieurs scénarios sont possibles :
- Vous faites un
git stash
pour isoler votre développement en cours. Vous basculez sur une nouvelle branchehotfix
pour pouvoir travailler dessus. Une fois terminé, vous revenez sur votre branche de feature et faites votregit apply
. - Vous faites un
git push
de tout votre dev avec un bon messageWIP - switch branch for comit
, ou quelque chose dans le genre, pour pouvoir sauvegarder votre travail en cours. Et vous partez ensuite sur la résolution du bug.
Dans les deux cas on voit que la sauvegarde de votre travail en cours est le point problématique. Comment travailler sur un autre sujet, sans perdre le dev en cours ? Si possible, comment le faire proprement ?
C’est dans ce contexte qu’intervient la commande git worktree
.
L’idée va être toute simple, la commande vous permet de créer un répertoire qui correspond à une branche : comme ça plus besoin de jongler entre vos branches et de gérer la sauvegarde de vos devs en cours.
$ git worktree add -b hotfix ~/Workspace/hotfix main
# ^ ^ ^
# | | |
# (a) (b) (c)
(a) Nom de la branche qui va être créée
(b) Chemin d'accès au répertoire où se trouvera la branche
(c) Origin sur laquelle se base la branche
Je vais donc créer une branche hotfix
qui va se situer dans ~/Workspace/hotfix
et qui se basera sur la branche main
.
Je peux ensuite naviguer entre mes différents répertoires et laisser mon code sur celui qui représente develop
tout en travaillant sur hotfix
sans que cela ne rentre en conflit.
Mon conseil est d’utiliser cette commande pour les hotfix et de supprimer le repertoire une fois le hotfix déployé. Cela permettra d’éviter de conserver des branches trop longtemps et ainsi risquer des conflits lors du rebase.
Vous trouverez toute la doc nécessaire ici : Doc - git-worktree