Question Git diff contre une cachette


Comment puis-je voir les changements que le déstockage apportera à l'arbre de travail actuel? Je voudrais savoir quels changements seront faits avant de les appliquer!


976
2017-10-06 16:48


origine


Réponses:


Voir la plus récente cachette:

git stash show -p

Voir une cachette arbitraire:

git stash show -p stash@{1}

Du git stash pages de manuel:

Par défaut, la commande affiche le diffstat, mais il acceptera tout   format connu pour git diff (par exemple, git stash show -p stash @ {1} pour voir   la deuxième cachette la plus récente sous forme de patch).


1348
2017-10-06 16:50



Pour voir la cachette la plus récente:

git stash show -p

Pour voir une cachette arbitraire:

git stash show -p stash@{1}

En outre, j'utilise git diff pour comparer la cachette avec n'importe quelle branche.

Vous pouvez utiliser:

git diff stash@{0} master

Pour voir tous les changements par rapport à la branche principale.


Ou vous pouvez utiliser:

git diff --name-only stash@{0} master

Pour trouver facilement seulement les noms de fichiers modifiés.


239
2017-07-26 14:33



Si la branche sur laquelle vos changements sont basés a changé entre-temps, cette commande peut être utile:

git diff stash@{0}^!

Cela compare le stockage avec le commit sur lequel il est basé.


77
2018-03-27 13:23



Si votre arbre de travail est sale, vous pouvez le comparer à une cachette en commençant par l'arbre de travail sale, puis en le comparant à la cachette. Ensuite, vous pouvez annuler le commit avec l'arbre de travail sale (puisque vous ne voudrez peut-être pas avoir ce commit sale dans votre journal de validation).

Vous pouvez également utiliser l'approche suivante pour comparer deux cachettes les unes avec les autres (dans ce cas, vous venez de faire apparaître l'une des cachettes au début).

  • Validez votre arbre de travail sale:

    git add .
    git commit -m "Dirty commit"
    
  • Diffère la cachette avec ce commit:

    git diff HEAD stash@{0}
    
  • Ensuite, après, vous pouvez annuler la validation et la remettre dans le répertoire de travail:

    git reset --soft HEAD~1
    git reset .
    

Maintenant vous avez différencié l'arbre de travail sale de votre cachette, et vous revenez là où vous étiez initialement.


30
2018-01-21 13:33



Cela fonctionne pour moi sur git version 1.8.5.2:

git diff stash HEAD

16
2018-01-22 23:36



La réponse de @ Magne est la seule à (très en retard) la date qui répond à l'interprétation la plus flexible / utile de la question, mais c'est un peu plus compliqué que nécessaire. Plutôt que de valider et de réinitialiser, il vous suffit de mettre en cache votre copie de travail, de comparer, puis de vous décoller.

git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop

Cela vous montre les différences entre le haut de la pile de cache et votre dossier de travail en faisant temporairement changer votre dossier de travail en haut de la pile de stash (stash @ {0}), en déplaçant le haut original (stash @ {1}) puis comparez en utilisant le sommet d'origine dans la position "nouveau jeu" pour voir les changements qui résulteraient de l'application de ce dernier sur votre travail actuel.

"Mais si je n'ai pas de travail en cours?"  Ensuite, vous êtes dans le cas ennuyeux normal. Utilisez simplement la réponse de @ Amber

git stash show

ou la réponse de @ czerasz

git diff stash@{0}

ou admettre que le stockage et l'effacement sont de toute façon rapides et faciles, il suffit d'annuler les changements et de les inspecter. Si vous ne voulez pas les jeter en ce moment (l'index actuel / le dossier de travail change). En entier c'est

git stash apply
git diff
git reset
git checkout

13
2018-06-28 16:13



Si vous avez des outils pour diff (comme au-delà de comparer)

git difftool stash HEAD

9
2017-09-09 08:08



FWIW Cela peut être un peu redondant pour toutes les autres réponses et est très similaire à la réponse acceptée qui est sur place; mais peut-être que cela aidera quelqu'un. 

git stash show --helpvous donnera tout ce dont vous avez besoin; y compris les informations de spectacle de cachette.

montrer [<stash>]

Affiche les changements enregistrés dans la mémoire comme un diff entre l'état caché et son parent d'origine. Quand aucun n'est donné, montre le dernier. Par défaut, la commande affiche le diffstat, mais acceptera tout format connu pour git diff (par exemple, git stash show -p stash @ {1} pour voir la deuxième cachette la plus récente sous forme de patch). Vous pouvez utiliser les variables de configuration stash.showStat et / ou stash.showPatch pour modifier le comportement par défaut.


2
2017-08-18 16:40