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?
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}
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}
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.
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
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
.
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
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 )
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
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.
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é):
et voir les fichiers modifiés par cachette:
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):
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
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.
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
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 .