Est-il possible de prévisualiser le contenu de stash en git?

j'ai souvent mis le travail de côté pour plus tard, puis d'autres choses arrive, et quelques semaines plus tard, je veux inspecter la cachette, et de savoir ce que les changements qu'il ferait si je l'ai appliqué à l'arbre de travail dans son état actuel.

je sais que je peux faire une différence sur la planque, mais cela me montre toutes les différences entre l'arbre de travail et la planque, alors que je suis juste intéressé de savoir ce que la planque appliquer va changer.

Comment faire?

394
demandé sur SMR 2010-08-26 13:08:05

14 réponses

git stash show vous montrera les fichiers qui ont changé dans votre plus récente cachette. Vous pouvez ajouter l'option -p pour afficher la diff.

git stash show -p

Si la cachette qui vous intéresse n'est pas la plus récente, puis ajouter le nom de la réserve à la fin de la commande:

git stash show -p stash@{2}
538
répondu Jlew 2016-03-02 18:10:02

pour voir la liste actuelle des réserves, utilisez

git stash list

vous devriez pouvoir voir une liste, comme

stash@{0}: WIP on ...
stash@{1}: ...
stash@{2}: ...
...

pour voir diff sur l'une de ces caches, utilisez la commande git stash show -p stash@{n}

72
répondu segfault 2016-11-16 15:03:03

je suis un fan de gitk 's interface graphique pour visualiser git repos. Vous pouvez voir le dernier article caché avec:

gitk stash

Vous pouvez également utiliser la vue de l'un de vos planqué changements (comme indiqué par git stash list ). Par exemple:

gitk stash@{2}

dans la capture d'écran ci-dessous, vous pouvez voir la stash comme un commit en haut à gauche, quand et d'où il vient dans l'histoire de commit, la liste des fichiers modifiés en bas à droite, et la diff ligne par ligne en bas à gauche. Pendant que la cachette est encore cachée.

gitk viewing a stash

25
répondu Jeff Ward 2015-03-09 17:45:43

pour voir tous les changements dans une réserve non ouverte:

git stash show -p stash@{0}

pour visualiser les modifications d'un fichier particulier dans une cachette non ouverte:

git diff HEAD stash@{0} -- path/to/filename.php
15
répondu Wesley Musgrove 2017-10-04 12:47:27

en appliquant simplement la cachette en utilisant git stash apply ? Cela ne supprime pas la cachette, de sorte que vous pouvez réinitialiser votre arbre de travail sans perdre le travail caché, si vous n'aimez pas les changements. Et si vous les aimez, vous pouvez simplement enlever la cachette avec git stash drop .

12
répondu lunaryorn 2014-05-08 03:52:03

au-Delà de la gitk recommandation Est-il possible de prévisualiser cachette contenu dans git? vous pouvez installer tig et appeler tig stash . Ce programme gratuit / ouvert console vous permet également de choisir quelle cachette comparer

5
répondu Bruce 2017-05-23 12:26:43

j'utilise ceci pour voir toutes mes cachettes avec des couleurs différentes sur la couleur (sur Fedora 21):

git stash list | 
  awk -F: '{ print "\n\n\n\n"; print "151900920"; print "\n\n"; 
  system("git -c color.ui=always stash show -p " ); }' | 
  less -R

(adaptation de Git: voir ce qui est dans une cachette, sans application de stash )

3
répondu seanf 2017-05-23 11:33:27

vous pouvez afficher la liste de toutes les cachettes par la commande suivante:

$ git stash list

stash@{0}: WIP on dev: ddd4d75 spelling fix

stash@{1}: WIP on dev: 40e65a8 setting width for messages

......

......

......


stash@{12}: WIP on dev: 264fdab added token based auth

la nouvelle cachette est la première.

vous pouvez simplement sélectionner l'index n de la cachette fournie dans la liste ci-dessus et utilisez la commande suivante pour voir les détails de la cachette

git stash show -p stash@{3}

de même,

git stash show -p stash@{n}

vous pouvez également vérifier diff en utilisant la commande:

git diff HEAD stash@{n} -- /path/to/file
3
répondu Vishvajit Pathak 2017-10-04 12:45:40

D'abord, nous pouvons faire usage de git stash list pour obtenir tous les articles de stash:

$git stash list
stash@{0}: WIP on ...
stash@{1}: WIP on ....
stash@{2}: WIP on ...

alors nous pouvons faire usage de git stash show stash@{N} pour vérifier les fichiers sous une cachette spécifique N . Si nous tirons, alors nous pouvons obtenir:

$ git stash show stash@{2}
fatal: ambiguous argument 'stash@2': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

la raison en est peut-être que la coquille mange des bretelles bouclées et git voit stash@2 et non stash@{2} . Et pour corriger cela, nous avons besoin de faire usage de citations simples pour les bretelles comme:

git stash show stash@'{2'}
com/java/myproject/my-xml-impl.xml                     | 16 ++++++++--------
com/java/myproject/MyJavaClass.java                    | 16 ++++++++--------
etc.
2
répondu i_am_zero 2016-07-04 14:43:19

lorsque cette question a été posée pour la première fois, cela n'était peut-être pas une option, mais si vous utilisez PyCharm, vous pouvez utiliser l'outil UnStash Changes (VCS->Git - >Unstach Changes...). Cela vous permet de voir la liste des modifications cachées, ainsi que pop, drop, clear, ou apply (dans une nouvelle branche si désiré):

Unstash Changes Window

et voir les fichiers modifiés par cachette:

Paths Affected Window

ainsi que diffs par fichier. Dans les diffs, vous pouvez choisir des modifications individuelles à appliquer à partir des modifications cachées à la branche de travail (en utilisant le chevron de gauche):

enter image description here

2
répondu hlongmore 2018-06-14 21:41:25

oui, la meilleure façon de voir ce qui est modifié est à enregistrer dans le fichier comme ça:

git stash show -p stash@{0} > stash.txt
1
répondu Walterwhites 2018-06-10 10:19:09

afficher toutes les caches

noms des fichiers seulement:

for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show $i; done

contenu complet du fichier dans toutes les casiers:

for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show -p $i; done

vous obtiendrez la sortie diff colorisée que vous pouvez page avec space ( forward ) et b ( backwards ), et q pour fermer le pager pour la cachette actuelle. Si vous préférez je l'ai dans un fichier puis ajouter > stashes.diff à la commande.

0
répondu ccpizza 2017-11-21 15:59:35

voir la liste des modifications cachées""

git stash list

pour afficher la liste des fichiers modifiés dans une réserve particulière

git stash show -p stash@{0} --name-only

Pour l'affichage d'un fichier particulier en cachette

git show stash@{0} path/to/file
0
répondu Bharat 2018-05-12 12:50:51

en plus des réponses existantes qui suggère d'utiliser (pour montrer la différence de la troisième à la dernière stash)

git stash show -p stash@{2}

notez que dans la git-stash documentation , il est écrit que

peut aussi être référencé en spécifiant seulement l'indice de stash (par exemple l'entier n est équivalent à stash@{n} ).

donc c'est aussi possible à utiliser (c'est l'équivalent de la commande ci-dessus)

git stash show -p 2

qui devrait également éviter certains problèmes de Powershell .

0
répondu user202729 2018-09-04 10:17:18