Je range souvent le travail pour plus tard, puis d'autres choses arrivent, et quelques semaines plus tard, je veux inspecter la cachette et savoir quels changements cela apporterait si je l'appliquais à l'arbre de travail dans son état actuel.
Je sais que je peux faire un diff git sur la stash, mais cela me montre toutes les différences entre l'arborescence de travail et la stash, alors que je suis juste intéressé de savoir ce que l'application de stash va changer.
Comment puis-je faire ceci?
git stash show -p stash@{1} >~/.diff && vim ~/.diff
(ne doit pas êtrevim
. n'importe quel éditeur de texte tant que votre éditeur de texte a un support de coloration syntaxique pour ladiff
sortie).Réponses:
git stash show
vous montrera les fichiers qui ont changé dans votre dernière cachette. Vous pouvez ajouter l'-p
option pour afficher le diff.Si la cachette qui vous intéresse n'est pas la plus récente, ajoutez le nom de la cachette à la fin de la commande:
la source
fatal: unable to create temp-file: Invalid argument
- une idée pourquoi?git stash show -p stash@{0}
pour voir une cachette spécifique. 0 montre la dernière tonalité, 1 l'avant-dernière .. etc.git stash list
affichera tout le disponible.git stash show -p 'stash@{0}'
)git stash show -p stash@{0}> stash.txt
Pour afficher une liste actuelle de stash:
Vous verrez une liste comme celle-ci:
Pour afficher les différences sur l'un de ces stashes:
la source
Je suis un fan de
gitk
l'interface graphique de pour visualiser git repos. Vous pouvez afficher le dernier élément caché avec:Vous pouvez également utiliser l'affichage de toutes vos modifications stockées (comme indiqué par
git stash list
). Par exemple:Dans la capture d'écran ci-dessous, vous pouvez voir la cachette sous forme de validation dans le coin supérieur gauche, quand et d'où elle provient dans l'historique des validations, la liste des fichiers modifiés en bas à droite et la différence ligne par ligne dans le coin inférieur. -la gauche. Pendant que la cachette est toujours cachée.
la source
stash@{X}
valeurs sur la ligne de commande pour voir plus de résultats à la fois, mais je n'ai pas trouvé de moyen simple de simplement dire `` afficher toutes les entrées cachées '' dans gitk.gitk stash
semble être un raccourci pourgitk stash@{0}
gitk `git stash list --pretty=format:%gd`
puis rechercher "WIP on" pour passer à la prochaine cachette.gitk --reflog
vous permet de voir toutes les cachettes, et plus encore.Pour afficher toutes les modifications dans une cachette non remplie:
Pour afficher les modifications d'un fichier particulier dans une cachette non éclatée:
la source
-p
est l'abréviation de--patch
. L'option vient degit-diff
. Si vous préférez le formulaire long, vous pouvez écriregit stash show --patch
.Au-delà de la recommandation gitk dans Est-il possible de prévisualiser le contenu caché dans git? vous pouvez installer tig et appeler
tig stash
. Ce programme de console gratuit / ouvert vous permet également de choisir la cachette à comparerla source
P
et!
respectivement.gitk
il est relativement facile de le pirater pour afficher toutes les cachettes .J'utilise cela pour voir toutes mes réserves avec surlignage de diff de couleur (sur Fedora 21):
(Adapté de Git: voir ce qu'il y a dans une cachette sans appliquer de cachette )
la source
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'
UnStash Changes
outil (VCS-> Git-> UnStash Changes ...). Cela vous permet d'afficher la liste des modifications cachées, ainsi que de faire apparaître, supprimer, effacer ou appliquer (dans une nouvelle branche si vous le souhaitez):et afficher les fichiers modifiés par stash:
ainsi que les différences par fichier. Dans les différences, vous pouvez sélectionner individuellement les modifications à appliquer à partir des modifications stockées dans la branche de travail (en utilisant le chevron pointant vers la gauche):
la source
Vous pouvez afficher la liste de toutes les sauvegardes à l'aide de la commande suivante:
La dernière cachette est la première.
Vous pouvez simplement sélectionner l'index
n
de la cachette fourni dans la liste ci-dessus et utiliser la commande suivante pour afficher les détails cachésDe même,
Vous pouvez également vérifier la différence en utilisant la commande:
la source
oui la meilleure façon de voir ce qui est modifié est d'enregistrer dans un fichier comme ça:
la source
Tout d'abord, nous pouvons utiliser la liste de dissimulations git pour obtenir tous les éléments de dissimulation:
Ensuite, nous pouvons utiliser
git stash show stash@{N}
pour vérifier les fichiers sous une cachette spécifiqueN
. Si nous le tirons, nous pouvons obtenir:La raison en est peut-être que la coquille mange des accolades bouclées et que Git voit
stash@2
et nonstash@{2}
. Et pour résoudre ce problème, nous devons utiliser des guillemets simples pour les accolades comme:la source
Afficher la liste des modifications cachées
Pour afficher la liste des fichiers modifiés dans une cachette particulière
Pour afficher un fichier particulier dans la cachette
la source
Afficher toutes les cachettes
Noms de fichiers uniquement:
Contenu complet du fichier dans toutes les réserves:
Vous obtiendrez une sortie diff colorisée que vous pourrez paginer avec space (en avant ) et b(en arrière ), et qpour fermer le téléavertisseur pour la cachette actuelle. Si vous préférez l'avoir dans un fichier, ajoutez-le
> stashes.diff
à la commande.la source
En plus des réponses existantes qui suggèrent d'utiliser (pour montrer la différence de l'avant-dernière cachette)
Notez que dans la
git-stash
documentation , il est écrit quePar conséquent, il est également possible d'utiliser (cela équivaut à la commande ci-dessus)
Ce qui devrait également éviter certains problèmes de Powershell .
la source
J'aime comment
gitk
peut vous montrer exactement ce qui n'était pas suivi ou assis dans l'index, mais par défaut, il affichera ces "validations" cachées au milieu de toutes vos autres validations sur la branche actuelle.L'astuce consiste à exécuter gitk comme suit:
(La citation est là pour le faire fonctionner dans Powershell, mais de cette façon, elle devrait également fonctionner dans d'autres coquilles.)
Si vous recherchez cette syntaxe dans la page d'aide de gitrevisions, vous trouverez ce qui suit:
Cela mettra apparemment gitk dans un mode tel que seuls les parents immédiats du commit sélectionné sont affichés, ce qui est exactement ce que j'aime.
Si vous voulez aller plus loin et répertorier tous les stashes, vous pouvez exécuter ceci:
(Ces guillemets simples à l'intérieur des guillemets sont nécessaires pour apaiser Bash, sinon il se plaint du point d'exclamation)
Si vous utilisez Windows et utilisez cmd ou Powershell:
la source
La commande suivante peut être utilisée pour extraire à nouveau les différences de changement stocké dans tout autre stash ou commit ou branche ou HEAD.
Voyons comment utiliser chacune des commandes mentionnées ci-dessus.
Pour obtenir la différence entre la plus haute cachette cachée @ {0} et la branche principale:
$ git diff stash @ {0} master
N'affiche que les noms de fichier et non les changements:
$ git diff - nom caché uniquement @ {0} maître
Voir la différence entre les stashes sélectionnés pour un fichier sélectionné:
$ git diff stash @ {0} ^ 1 stash @ {0} -
Voyez la différence entre les deux derniers stashes:
$ git difftool stash @ {0} stash @ {0} ^ 1
git difftool --dir-diff stash @ {0} stash @ {0} ^ 1
Sommaire:
Commandes utiles pour extraire le diff de stash git stash show sélectionné, git show, git diff, git difftool.
Voir la différence en utilisant la commande git stash show,
git stash show -p stash @ {0}
Voir les changements dans la cachette en utilisant la commande git show,
git show stash @ {1}
Découvrez la différence entre la dernière sauvegarde et la validation sélectionnée à l'aide de la commande git diff,
git diff stash @ {0}
Références:
https://howto.lintel.in/how-to-see-stashed-changes-using-git-stash/
https://git-scm.com/docs/git-show
https://git-scm.com/docs/git-stash
la source