Git a changé notre façon de coder à plusieurs. Mais certaines contraintes dues à la nature d'un projet ou la répartition des rôles dans une équipe nous oblige parfois à arrêter le travail en cours et passer une autre branche, ce qui entraîne un commit inévitable. Cela peut s'avérer gênant, car on se retrouve avec des comits ne correspondant à rien et rendant le projet instable. Heureusement, Guite a pensé à tout en mettant en place un système de remisage qui va vous permettre de stocker temporairement les modifications que vous avez effectuées pour pouvoir les réhabiliter plus tard (ceci permettra d'éviter des commit avec des messages du style "Fix du bug de l'an 2000 in progress").
git stash
Imaginons, vous avez des modifications en cours de création et vous avez envie de les mettre de côté temporairement, plutôt que de commit les différentes modifications vous alliez les stocker grâce au remisage.
git stash
Cette commande va mettre de côté toutes les modifications qui ont été apportées au projet depuis le dernier commit (si vous faites la commande git status
vous verrez alors qu'il n'y a plus de fichiers en attente de modifications). Vous pouvez alors continuer à travailler sur autre chose (faire vos commits de manière traditionnelle) et ré appliquer plus tard ces modifications avec la commande :
git stash apply
Il est possible de voir l'ensemble des stash sauvegardés avec
git stash list
Vous verrez au passage que le dernier remisage que vous avez fait est toujours présent. En effet, lorsque vous appliquez les modifications, Git ne supprime pas automatiquement ce que vous avez sauvegardé.Si vous souhaitez supprimer le dernier stash qui a été effectué il faudra alors taper la commande :
git stash drop
enfin il est possible de combiner les commandes apply
et drop
en utilisant la commande pop
git stash pop
# équivaut à
git stash apply
git stash drop
Stash multiple
Il est possible d'avoir plusieurs stash stockés en mémoire. Pour lister l'ensemble des éléments qui se situent dans votre remisage il vous faudra taper la commande :
git stash list
# stash@{0}: WIP on master: 04f9aed Fix effets spéciaux
# stash@{1}: WIP on master: a25d951 Lorem ipsum dolores
Pour appliquer la remise stash@{1} (c'est pas beau ce nom ?) :
git stash apply stash@{1}
Je ne vous le cache pas, il arrive souvent qu'on ne sache plus à quoi correspond tel ou tel stash, heureusement il est possible d'avoir plus de détails sur le contenu d'un stash.
git stash show stash@{1} -p
Une autre bonne pratique est de nommer ses stashs
git stash save "J'ai tout cassé"
Voilà ! Vous savez tout ce qu'il y a savoir sur le remisage sur Git. C'est une commande méconnue qui va vous permettre de vous sortir de pas mal de situations épineuses et qui vous permet d'éviter des commit "forcés". Si vous souhaitez avoir plus d'informations sur les possibilités de cette commande (l'ensemble des commandes disponibles, mais aussi leurs options) vous pouvez consulter la documentation.