Accéder au contenu principal
Git

Tout savoir sur Git stash : enregistrer, restaurer et gérer vos modifications

Apprenez à utiliser git stash pour enregistrer, inspecter, restaurer et gérer vos modifications. Maîtrisez le stash sélectif, la résolution de conflits et les bonnes pratiques pour des workflows propres.
Allan Ouko's photo
Allan Ouko
Actualisé · 9 min lire

Explorez l'IA

ChatGPTClaudePerplexity

Créez votre compte gratuit

S'entraîner et cursus vos progrès.

Continuer Avec Google
En continuant, vous acceptez nos Conditions d'utilisation, notre Politique de confidentialité et le fait que vos données seront hébergées aux États-Unis.

Vous êtes en plein développement d’une nouvelle fonctionnalité dans votre pipeline de données lorsqu’un bug critique tombe. Votre répertoire de travail contient des modifications à moitié terminées. Vous n’êtes pas prêt à valider, mais vous devez changer de branche immédiatement.

Dans ce tutoriel, je vous montre comment utiliser toute la suite de commandes git stash. Vous apprendrez à enregistrer, inspecter, restaurer, stasher de manière sélective et nettoyer vos stashes dans Git. Pour aller plus loin, je vous recommande notre cours Introduction to GitHub Concepts pour approfondir le contrôle de version et le travail avec des dépôts sur GitHub.

Apprenez les bases de Git dès aujourd'hui

Pour les débutants : Maîtriser le contrôle des versions à l'aide de Git.
Commencez À Apprendre Gratuitement

Qu’est-ce que Git stash ?

git stash est une commande Git qui met temporairement de côté vos modifications non validées afin de retrouver un répertoire de travail propre, sans créer de commit Git. Idéal pour changer de branche ou traiter une urgence sans perdre votre avancement.

Les stashes sont stockés dans une pile LIFO (dernier entré, premier sorti). Le plus récent est toujours stash@{0}, suivi de stash@{1}, etc.

Par défaut, git stash enregistre les fichiers suivis modifiés et les changements indexés (depuis l’index). En revanche, il n’inclut pas les nouveaux fichiers non suivis ni ceux ignorés, comme ceux listés dans .gitignore.

Comment enregistrer des modifications avec git stash

Dans cette section, je vous présente trois façons courantes de stasher des changements. Contexte constant : vous travaillez sur un projet de pipeline de données avec les fichiers data_pipeline.py, config.yaml et tests/test_pipeline.py.

Stasher les modifications suivies

Puisque git stash enregistre les modifications suivies ou indexées, lancez git status pour vérifier l’état des fichiers dans votre répertoire de travail. Après git stash, les changements suivis indexés et non indexés sont sauvegardés, vous laissant un répertoire de travail propre.

Comment utiliser git stash pour stasher des modifications suivies.

Inclure les modifications non suivies et les nouveaux fichiers

Par défaut, git stash ignore les fichiers jamais ajoutés au dépôt. Si vous avez créé un nouveau fichier de test, un stash standard le laissera dans votre répertoire, ce qui peut poser problème lors d’un changement de branche.

Comment utiliser git status pour vérifier l’état actuel du répertoire de travail.

Si vous exécutez git stash, ce fichier restera. Pour l’inclure, utilisez l’option -u ou --include-untracked :

git stash -u

Comment inclure les modifications non suivies et les nouveaux fichiers avec git stash.

Pour inclure absolument tous les fichiers, y compris ceux explicitement ignorés par votre .gitignore, utilisez git stash --all ou -a. Faites toutefois attention : vous pourriez embarquer des journaux ou artefacts de build par inadvertance.

Nommer votre stash

Avec git stash, des messages par défaut comme WIP on main deviennent vite ambigus si vous avez plusieurs stashes. Pour éviter cela, ajoutez toujours un message explicite lorsque vous voulez pousser vos stashes.

git stash push -m "refactor pipeline config handling."

Vous pouvez utiliser git stash list pour afficher et comparer la liste des stashes. Notez la différence entre un stash nommé et les entrées par défaut.

Comment nommer un stash avec des messages descriptifs.

Des messages clairs facilitent grandement l’identification du bon stash, surtout lorsque vous gérez plusieurs tâches ou que vous collaborez en équipe.

Je vous recommande d’explorer nos parcours GitHub Foundations et Git Fundamentals pour apprendre le contrôle de version avec Git, des bases aux workflows avancés : suivi des changements, gestion des dépôts et collaboration efficace.

Comment afficher et inspecter vos stashes

Avant d’appliquer un stash à l’aveugle, vérifiez son contenu. Cette étape, souvent négligée, évite la confusion ou les écrasements accidentels.

git stash list : lister tous les stashes

Utilisez la commande ci-dessous pour afficher votre pile de stashes :

git stash list

Comment lister tous les stashes avec git stash list.

Vous savez désormais que les stashes suivent un ordre LIFO. Le plus récent est toujours stash@{0}, chaque nouveau repoussant les précédents vers le bas de la pile.

git stash show : inspecter un stash avant application

Pour un résumé rapide des changements dans un stash, utilisez show sur une entrée précise. Par exemple, la commande ci-dessous affiche les modifications du dernier stash :

git stash show stash@{0}

Comment inspecter un stash avant d’appliquer les changements.

Pour voir les changements réels (diff complet), utilisez la commande ci-dessous pour afficher toutes les modifications ligne par ligne stockées dans ce stash.

git stash show -p stash@{0}

Comment inspecter les changements de code d’un stash avant application.

Bonne pratique : inspectez toujours un stash avant de l’appliquer, surtout s’il date de quelques jours ou si vous n’êtes pas certain de son contenu.

Comment restaurer des modifications stashtags

Une fois vos travaux mis de côté avec git stash, vous devrez les récupérer. Deux méthodes principales permettent de restaurer des stashes, y compris en ciblant une entrée précise par son index.

git stash pop : appliquer et supprimer

La manière la plus courante. Elle prend le stash au sommet (stash@{0}), applique les changements sur votre branche courante puis supprime ce stash de la pile.

git stash pop

Comment restaurer et supprimer un stash avec git stash pop.

Après pop, vos changements sont restaurés et le stash supprimé. Utilisez pop lorsque vous êtes certain d’en avoir fini avec cet état sauvegardé et souhaitez garder une liste propre.

Pour aller plus loin sur pop, consultez notre tutoriel Git Stash Pop pour apprendre à sauvegarder du travail non validé lors d’un changement de branche dans votre dépôt.

git stash apply : appliquer et conserver

Si vous souhaitez restaurer les changements tout en gardant le stash pour réutilisation, utilisez apply comme suit :

git stash apply stash@{1}

Comment restaurer un stash et le conserver avec git stash apply.

Référencer un stash par son index stash@{1} cible précisément l’entrée à restaurer. Utile pour appliquer les mêmes changements sur plusieurs branches, par exemple un ajustement de configuration partagé à pousser sur main et staging.

Utilisez git stash list pour confirmer que le stash est toujours présent après apply.

Comment afficher tous les stashes avec git stash list.

Comment stasher de manière sélective

Dans des projets réels, les changements s’entremêlent souvent. Vous pouvez souhaiter ne mettre de côté qu’une partie de votre travail et conserver le reste. Git propose deux méthodes pour un contrôle fin.

git stash push -m : stasher des fichiers précis

Si vous savez exactement quels fichiers doivent être mis de côté, indiquez leurs chemins pour ne stasher que ceux-là :

Par exemple, la commande ci-dessous ne stashe que le fichier data_pipeline.py. Utile pour mettre en pause une fonctionnalité expérimentale tout en gardant une correction de bug prête à valider.

git stash push -m "stash experimental pipeline logic" data_pipeline.py

Pour vérifier l’exécution, utilisez git status pour comparer l’état avant/après de votre dépôt.

Comment stasher des fichiers précis avec Git.

git stash push -p -m : stasher des blocs précis en mode interactif

Parfois, du « bon » code et du code « WIP » cohabitent dans le même fichier. Dans ce cas, utilisez -p ou --patch pour démarrer une session interactive. Vous choisirez des blocs (« hunks ») spécifiques à l’intérieur d’un fichier.

git stash push -p -m "Selective stash of pipeline logic"

Comment stasher des blocs précis en mode interactif.

Vous verrez « Stash this hunk » avec ces options :

  • y : oui, stasher ce hunk

  • n : non, passer ce hunk

  • q : quitter ; ne pas stasher ce hunk ni les suivants

  • a : tous ; stasher ce hunk et tous les suivants du fichier

  • d : supprimer ; ne pas stasher ce hunk ni les suivants du fichier

  • ? : aide

Ce flux de travail est très proche de git add -p. Pratique quand des changements dans un même fichier sont sans lien et doivent être gérés séparément.

Comment nettoyer votre stash

Les stashes sont faits pour vivre peu de temps. Si vous les accumulez, il sera plus difficile de retrouver le bon et le risque de conflits augmente au moment de les appliquer.

git stash drop : supprimer un stash précis

Pour retirer un seul stash, utilisez git stash drop avec son index. Par exemple, la commande ci-dessous supprime le 4e stash de la liste.

git stash drop stash@{3}

Comment supprimer un stash précis via son index.

Comme on le voit, la liste est réduite et les stashes restants sont réindexés après la suppression.

git stash clear : tout effacer

Pour supprimer tous les stashes d’un coup, utilisez :

git stash clear

Cette commande ne produit aucune sortie en cas de succès. Vérifiez avec git stash list.

Comment effacer tous les stashes avec git stash clear.

Soyez particulièrement prudent avec git stash clear : l’action est définitive et il n’y a pas d’annulation intégrée. N’exécutez-la que si vous êtes sûr de ne plus avoir besoin d’aucun stash.

git stash branch : convertir un stash en branche

Si votre branche actuelle a beaucoup divergé depuis la création du stash, son application peut provoquer des conflits de fusion. Dans ce cas, créez une nouvelle branche directement depuis le stash :

git stash branch pipeline-fix stash@{1}

Comment convertir un stash en branche avec git stash branch.

Cette commande effectue :

  • Création d’une nouvelle branche depuis le commit d’origine où le stash a été fait
  • Application du stash
  • Suppression de l’entrée de la liste des stashes

Je vous recommande notre tutoriel Git Branch pour approfondir la gestion des branches et améliorer collaboration et développement.

Autres commandes Git stash utiles

Au-delà des usages courants, voici quelques commandes avancées git stash à connaître :

  • git stash create : crée un objet de stash sans l’ajouter à la liste

  • git stash store : stocke un stash créé avec create

  • git stash export : exporte un stash vers une référence ou l’affiche

  • git stash import : importe un stash depuis un commit existant

Erreurs fréquentes et comment les corriger

Même si git stash est simple, quelques pièges reviennent souvent. Voici des erreurs que j’ai rencontrées, comment les reconnaître et les résoudre rapidement.

No local changes to save

L’« erreur » la plus courante… qui n’en est pas une. Elle survient lorsque vous exécutez git stash sur un répertoire de travail propre, sans fichiers suivis modifiés ni indexés.

Pour corriger, lancez git status ; si rien n’apparaît, il n’y a tout simplement rien à stasher.

Comment résoudre \

Conflit lors de l’application d’un stash

Les conflits surviennent lorsque la branche courante a modifié les mêmes lignes que celles présentes dans votre stash. Par exemple, après git stash pop sur une nouvelle branche où le fichier a été modifié, vous verrez probablement un message d’erreur :

Conflit de fusion lors de l’application d’un stash.

Vous verrez alors des marqueurs de conflit dans le fichier :

Marqueurs de conflit dans un fichier non suivi.

Pour résoudre :

  • Résolvez les conflits manuellement dans le fichier
  • Indexez les fichiers résolus
git add data_pipeline.py
  • Supprimez manuellement le stash avec git stash drop (s’il n’est PAS retiré automatiquement en cas de conflit)

Si les conflits sont trop complexes, appliquez plutôt les changements sur une base propre avec la commande ci-dessous.

git stash branch recovery-branch stash@{0}

Vous avez stashtags des fichiers par erreur

Il arrive d’exécuter git stash sans vérifier son répertoire de travail, puis de réaliser plus tard que vous avez caché une correction que vous vouliez réellement valider.

Pour éviter cela, soyez explicite sur les fichiers à stasher. Par exemple, la commande ci-dessous ne stashera que data_pipeline.py au lieu de tout le répertoire de travail.

git stash push data_pipeline.py

Vous pouvez aussi utiliser git stash -p pour le mode interactif (patch) et ne stasher que certaines parties des changements dans les fichiers, pas les fichiers entiers.

Mesure préventive : vérifiez toujours git status avant de stasher.

Conclusion

En règle générale, gardez vos stashes éphémères et utilisez des messages descriptifs. Si vous n’y revenez pas dans la journée, créez plutôt une branche WIP : vous pourrez la pousser sur un remote et elle ne se perdra pas.

Pour renforcer vos compétences Git, je vous recommande notre cours Intermediate Git pour apprendre à collaborer avec Git. Je vous recommande aussi Advanced Git pour travailler avec Git sur de gros projets et gérer des scénarios complexes de contrôle de version dans le développement de pipelines de données.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Je crée des articles qui simplifient la science des données et l'analyse, en les rendant faciles à comprendre et accessibles.

FAQ sur Git stash

Git stash enregistre-t-il les fichiers non suivis ?

Non, par défaut, git stash n’enregistre que les fichiers suivis. Pour inclure les fichiers non suivis, utilisez git stash -u.

Git stash affecte-t-il mon historique de commits ?

Non, les stashes sont distincts de votre historique de commits et n’apparaissent pas dans les logs de votre branche.

Quelle est la différence entre git stash pop et git stash apply ?

git stash pop applique le stash et le supprime, tandis que git stash apply applique le stash mais le conserve dans la liste.

Pourquoi Git affiche-t-il « No local changes to save » ?

Ce message apparaît lorsque votre répertoire de travail est propre : aucun fichier suivi modifié ni indexé à stasher.

Qu’est-ce qui provoque des conflits lors de la restauration d’un stash ?

Les conflits se produisent lorsque les mêmes portions de fichiers ont été modifiées à la fois dans votre branche courante et dans le stash.

Sujets
Git

Apprenez Git avec DataCamp

Cours

Git intermédiaire

2 h
44K
Découvrez les branches et les dépôts distants pour le contrôle de version dans les projets collaboratifs de logiciels et de données à l'aide de Git.
Voir les détailsCommencer Le Cours

Créez votre compte gratuit

S'entraîner et cursus vos progrès.

Continuer Avec Google
En continuant, vous acceptez nos Conditions d'utilisation, notre Politique de confidentialité et le fait que vos données seront hébergées aux États-Unis.
Voir plus
Contenus associés

blog

Architecture de l'entrepôt de données : Tendances, outils et techniques

Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Kurtis Pykes 's photo

Kurtis Pykes

15 min

blog

Plus de 50 questions/réponses d’entretien AWS pour 2026

Un guide complet des questions d’entretien AWS de base, intermédiaires et avancées, avec des mises en situation inspirées de cas réels.
Zoumana Keita 's photo

Zoumana Keita

15 min

Tutoriel

Cache Python : Deux méthodes simples

Apprenez à utiliser des décorateurs tels que @functools.lru_cache ou @functools.cache pour mettre en cache des fonctions en Python.
Stephen Gruppetta's photo

Stephen Gruppetta

12 min

cursor ai code editor

Tutoriel

Cursor AI : Un guide avec 10 exemples pratiques

Apprenez à installer Cursor AI sur Windows, macOS et Linux, et découvrez comment l'utiliser à travers 10 cas d'utilisation différents.

Tutoriel

Power Pivot Excel : guide pas à pas

Apprenez à relier des tables, écrire des formules DAX et construire des rapports interactifs dans Excel.
Laiba Siddiqui's photo

Laiba Siddiqui

14 min

Tutoriel

30 astuces Python pour un meilleur code, avec exemples

Nous avons sélectionné 30 astuces Python pour améliorer votre code et développer vos compétences en Python.
Kurtis Pykes 's photo

Kurtis Pykes

15 min

Voir plus