Git Stash expliqué: Comment stocker temporairement les modifications locales dans Git

Git a une zone appelée le stash où vous pouvez stocker temporairement un instantané de vos modifications sans les valider dans le référentiel. Il est distinct du répertoire de travail, de la zone de préparation ou du référentiel.

Cette fonctionnalité est utile lorsque vous avez apporté des modifications à une branche que vous n'êtes pas prêt à valider, mais que vous devez passer à une autre branche.

Modifications de la réserve

Pour enregistrer vos modifications dans la cachette, exécutez la commande:

git stash save "optional message for yourself"

Cela enregistre vos modifications et ramène le répertoire de travail à ce à quoi il ressemblait pour le dernier commit. Les modifications stockées sont disponibles à partir de n'importe quelle branche de ce référentiel.

Notez que les modifications que vous souhaitez conserver doivent figurer sur des fichiers suivis. Si vous avez créé un nouveau fichier et essayez de cacher vos modifications, vous pouvez obtenir l'erreur No local changes to save.

Afficher les modifications cachées

Pour voir ce qu'il y a dans votre réserve, exécutez la commande:

git stash list

Cela renvoie une liste de vos instantanés enregistrés au format [email protected]{0}: BRANCH-STASHED-CHANGES-ARE-FOR: MESSAGE. La [email protected]{0}partie est le nom de la réserve et le nombre entre accolades ( { }) est l'index de cette réserve. Si vous avez plusieurs ensembles de modifications en mémoire, chacun aura un index différent.

Si vous avez oublié les modifications apportées à la réserve, vous pouvez en voir un résumé avec git stash show NAME-OF-STASH. Si vous voulez voir la disposition typique des patchs de style diff (avec les + et - pour les changements ligne par ligne), vous pouvez inclure l' -poption (pour patch). Voici un exemple:

git stash show -p [email protected]{0} # Example result: diff --git a/PathToFile/fileA b/PathToFile/fileA index 2417dd9..b2c9092 100644 --- a/PathToFile/fileA +++ b/PathToFile/fileA @@ -1,4 +1,4 @@ -What this line looks like on branch +What this line looks like with stashed changes

Récupérer les modifications cachées

Pour récupérer les modifications de la réserve et les appliquer à la branche actuelle sur laquelle vous vous trouvez, vous avez deux options:

  1. git stash apply STASH-NAME applique les modifications et laisse une copie dans la cachette
  2. git stash pop STASH-NAME applique les modifications et supprime les fichiers de la réserve

Il peut y avoir des conflits lorsque vous appliquez des modifications. Vous pouvez résoudre les conflits comme une fusion (voir git mergepour plus de détails).

Supprimer les modifications cachées

Si vous souhaitez supprimer les modifications cachées sans les appliquer, exécutez la commande:

git stash drop STASH-NAME

Pour effacer tout le cache, exécutez la commande:

git stash clear