Git stash deux fois

94

J'ai dû changer rapidement de branche git, alors j'ai couru git stash, mais j'ai dû le relancer car l'un de mes fichiers avait besoin d'être édité.

J'ai donc exécuté git stashdeux fois et je suis prêt à revenir à l'édition de mes fichiers. J'ai couru git stash applymais je ne suis pas convaincu que tous les fichiers que j'avais cachés l'ont été. Y a-t'il quelque chose que je puisse faire? Un moyen de vérifier?

Quand je cours git stash show, je vois juste le dernier de mes deux stashes git.

Est-il possible de tout montrer git stashes?

stephenmurdoch
la source
4
git stash list. Si vous avez fait deux cachettes, appelez git stash popdeux fois.
Felix Kling
Salut, vous l'avez corrigé! Vous devriez le mettre comme réponse. Merci beaucoup
stephenmurdoch

Réponses:

169

Vous pouvez obtenir une liste de toutes les cachettes avec

git stash list

qui vous montrera quelque chose comme

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B

Si vous avez fait deux cachettes, appelez simplement git stash popdeux fois. Par opposition à git stash apply, popapplique et supprime la dernière réserve.

Vous pouvez également référencer une réserve spécifique, par exemple

git stash show stash@{1}

ou

git stash apply stash@{1}
Félix Kling
la source
Merci beaucoup. J'ai sauvé ma journée.
stephenmurdoch
25
Si vous voulez git stash popdeux fois parce que vous voulez les deux stashes dans le même commit mais que vous rencontrez l'erreur ": Vos modifications locales apportées aux fichiers suivants seraient écrasées par la fusion:" le deuxième git stash pop, vous pouvez: 1) git stash pop, 2) git add .et 3 ) git stash pop.
gabe
Cela m'a aidé. J'avais besoin de faire "git stash" puis "git stash --all" pour cacher de nouveaux fichiers non suivis. Faire deux fois git stash pop ne fonctionnait pas. Je n'ai récupéré que la dernière réserve.
Leopold Kristjansson
0

Je suis tombé sur cette situation, j'ai fait deux stashes et git stash pop vient de décoller le dernier stash. Alors j'ai fait

git stash list

git stash pop stash@{1}

Cela a libéré ma première réserve et j'ai pu voir tous mes changements!

Waaheeda
la source
0

Vous avez posé quelques questions différentes par courrier, et d'autres répondants ont donné de bonnes réponses à certaines d'entre elles. Celui qui semble le plus important mais qui n'a pas reçu de réponse est celui-ci:

>> Je ne suis pas convaincu que tous les fichiers que j'avais cachés l'ont été. Y a-t'il quelque chose que je puisse faire? Un moyen de vérifier?

Comparer la réserve à l'arborescence locale

Je pense que ce que vous voulez faire est de comparer la réserve à votre arbre de travail local . Vous pouvez mettre le commutateur -p sur la commande stash et vous êtes bon:

git stash show -p

Si vous en recherchez un en particulier, utilisez simplement son nom ou son identifiant git stash dans la liste de stockage:

git stash show -p stash@{3}

Peut-être utiliser le diff?

Si vous êtes vraiment intéressé à développer vos compétences git, vous pouvez toujours opter pour une différence. Pour voir la différence entre ce qui se trouve dans la réserve et ce qui est archivé dans HEAD sur la branche maître, le diff suivant peut être utilisé:

git diff stash@ master

Une autre commande intéressante pour vous montrer les modifications des éléments de l'historique de la sauvegarde qui pourraient être utiles est --stat:

git stash list --stat

Mais je pense que la réponse simple est la bonne réponse. Utilisez simplement le commutateur -p et vous verrez probablement si la cachette que vous avez mise sur les tablettes a été récupérée.

 git stash show -p stash@{3}
Cameron McKenzie
la source