Comment vérifier si un stash Git contient des modifications spécifiques

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à inspecter le contenu d'un stash Git pour déterminer s'il contient des modifications spécifiques. Nous commencerons par effectuer et stocker (stash) quelques modifications dans un dépôt d'exemple.

Vous utiliserez ensuite la commande git stash show -p pour afficher le diff détaillé du stash le plus récent, vous permettant de voir les lignes exactes qui ont été ajoutées, supprimées ou modifiées. Enfin, vous explorerez comment examiner plusieurs stashes pour trouver les modifications que vous recherchez.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") subgraph Lab Skills git/diff -.-> lab-560103{{"Comment vérifier si un stash Git contient des modifications spécifiques"}} git/stash -.-> lab-560103{{"Comment vérifier si un stash Git contient des modifications spécifiques"}} end

Exécuter git stash show -p

Dans cette étape, nous apprendrons à inspecter les modifications stockées dans un stash Git. Lorsque vous utilisez git stash, Git enregistre vos modifications non validées (uncommitted changes). Pour voir exactement ce qui a été enregistré, vous pouvez utiliser la commande git stash show.

Tout d'abord, modifions un fichier dans notre dépôt my-time-machine. Revenons au répertoire si vous n'y êtes pas déjà :

cd ~/project/my-time-machine

Maintenant, ajoutons du nouveau contenu à notre fichier message.txt. Nous utiliserons la commande echo avec >> pour ajouter du texte au fichier, afin de ne pas écraser le contenu existant.

echo "Adding a new line for stashing." >> message.txt

Vous pouvez vérifier le contenu du fichier en utilisant cat :

cat message.txt

Vous devriez voir à la fois la ligne d'origine et la nouvelle ligne :

Hello, Future Me
Adding a new line for stashing.

Maintenant, stockons (stash) ces modifications. N'oubliez pas que le stash enregistre vos modifications non validées afin que vous puissiez travailler sur autre chose et y revenir plus tard.

git stash save "Added a line for stashing demo"

Vous devriez voir un message indiquant que les modifications ont été enregistrées :

Saved working tree and index state On branch master: Added a line for stashing demo

Maintenant que les modifications sont stockées, utilisons git stash show pour voir ce qui se trouve dans le stash.

git stash show

Cette commande vous donne un résumé des modifications dans le stash le plus récent. Vous pourriez voir un résultat comme celui-ci :

 message.txt | 1 +
 1 file changed, 1 insertion(+)

Cela nous indique qu'un fichier (message.txt) a été modifié et qu'une ligne a été ajoutée.

Pour voir le contenu réel des modifications, nous devons ajouter le drapeau -p (qui signifie patch). Cela nous montrera le diff, tout comme git diff.

git stash show -p

Cette commande affichera les lignes exactes qui ont été ajoutées, supprimées ou modifiées dans les modifications stockées. Le résultat ressemblera à un diff Git standard :

diff --git a/message.txt b/message.txt
index <some_hash>..<some_hash> 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+Adding a new line for stashing.

Les lignes commençant par + indiquent des ajouts. Dans ce cas, nous avons ajouté la ligne "Adding a new line for stashing."

L'utilisation de git stash show -p est essentielle pour comprendre ce qui se trouve dans un stash avant de décider de l'appliquer ou de le supprimer. Cela vous aide à confirmer que le stash contient les modifications que vous attendez.

Rechercher des modifications dans le diff du stash

Dans l'étape précédente, nous avons utilisé git stash show -p pour afficher les modifications dans un stash. Parfois, la sortie du diff peut être très longue, surtout dans de grands projets. Dans de tels cas, vous pourriez vouloir rechercher des modifications spécifiques dans le diff du stash.

La sortie du diff de Git est simplement du texte, vous pouvez donc la rediriger (pipe) vers des outils standard de la ligne de commande Linux comme grep pour rechercher des motifs.

Essayons de rechercher la ligne que nous avons ajoutée dans l'étape précédente : "Adding a new line for stashing."

Assurez-vous que vous êtes toujours dans le répertoire ~/project/my-time-machine.

cd ~/project/my-time-machine

Maintenant, exécutez la commande git stash show -p et redirigez sa sortie vers grep. Nous allons rechercher le mot "stashing".

git stash show -p | grep "stashing"

Vous devriez voir la ligne contenant le mot "stashing" dans la sortie du diff :

+Adding a new line for stashing.

Cela montre comment vous pouvez utiliser grep pour filtrer la sortie de git stash show -p et trouver des lignes ou des motifs spécifiques dans les modifications stockées (stashed changes).

Vous pouvez utiliser n'importe quelle option de grep pour affiner votre recherche. Par exemple, vous pourriez utiliser -i pour une recherche insensible à la casse, ou -C pour afficher les lignes de contexte autour de la correspondance.

Être capable de rechercher dans le diff du stash est une technique puissante, surtout lorsque vous avez plusieurs stashes ou des stashes volumineux. Cela vous aide à localiser rapidement les modifications qui vous intéressent sans avoir à parcourir manuellement toute la sortie du diff.

Tester plusieurs stashes

Dans des scénarios réels, vous devrez peut-être stocker (stash) des modifications plusieurs fois. Git vous permet d'avoir plusieurs stashes, qui sont gérés sous forme de pile (stack). Le stash le plus récent se trouve au sommet de la pile, désigné par stash@{0}. Les stashes plus anciens sont stash@{1}, stash@{2}, et ainsi de suite.

Créons un autre ensemble de modifications et stockons-les pour voir comment cela fonctionne.

Tout d'abord, assurez-vous que vous êtes dans le répertoire ~/project/my-time-machine.

cd ~/project/my-time-machine

Maintenant, ajoutons une ligne différente au fichier message.txt :

echo "Adding a second line for another stash." >> message.txt

Vérifions le contenu :

cat message.txt

Vous devriez maintenant voir trois lignes :

Hello, Future Me
Adding a new line for stashing.
Adding a second line for another stash.

Maintenant, stockons ces nouvelles modifications :

git stash save "Added a second line for stashing demo"

Vous devriez voir un message indiquant le nouveau stash :

Saved working tree and index state On branch master: Added a second line for stashing demo

Pour voir la liste des stashes que vous avez, utilisez la commande git stash list :

git stash list

Vous devriez voir quelque chose comme cela :

stash@{0}: On master: Added a second line for stashing demo
stash@{1}: On master: Added a line for stashing demo

Notez que le stash le plus récent ("Added a second line...") est stash@{0}, et le précédent ("Added a line...") est stash@{1}.

Vous pouvez utiliser git stash show -p avec l'identifiant du stash pour afficher le contenu d'un stash spécifique. Par exemple, pour afficher le premier stash que nous avons créé (stash@{1}) :

git stash show -p stash@{1}

Cela vous montrera le diff des modifications dans stash@{1} :

diff --git a/message.txt b/message.txt
index <some_hash>..<some_hash> 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+Adding a new line for stashing.

Et pour afficher le stash le plus récent (stash@{0}) :

git stash show -p stash@{0}

Cela vous montrera le diff des modifications dans stash@{0} :

diff --git a/message.txt b/message.txt
index <some_hash>..<some_hash> 100644
--- a/message.txt
+++ b/message.txt
@@ -2 +2,2 @@
 Adding a new line for stashing.
+Adding a second line for another stash.

Être capable de gérer plusieurs stashes et d'inspecter leur contenu individuellement est très utile lorsque vous gérez différentes tâches ou expériences.

Résumé

Dans ce laboratoire (lab), nous avons appris à inspecter le contenu d'un stash Git en utilisant la commande git stash show. Nous avons commencé par apporter des modifications à un fichier, puis nous avons stocké (stash) ces modifications avec un message descriptif en utilisant git stash save. Ensuite, nous avons utilisé git stash show pour obtenir un résumé des modifications et, plus important encore, git stash show -p pour afficher le diff détaillé des modifications stockées, ce qui nous a permis de voir les lignes exactes qui ont été ajoutées ou modifiées.

Les étapes suivantes, qui n'ont pas été entièrement détaillées dans le contenu fourni, impliqueraient probablement de rechercher des modifications spécifiques dans le diff du stash et de tester plusieurs stashes pour comprendre comment inspecter différents stashes dans la pile (stack). Ce processus est crucial pour vérifier qu'un stash contient les modifications attendues avant de l'appliquer ou de le supprimer.