2012-04-03 4 views
15

Cela semble une erreur très stupide, je viens de faire un git stash pop sur un arbre de travail sale. Je ne connais aucun moyen de garder les changements désirés et d'annuler le stash pop. En existe-t-il un? Ou une telle erreur est impardonnable?Annuler git stash pop sur l'arbre de travail sale

Répondre

8

Si vous avez encore SHA1, vous pouvez générer un patch (git format-patch SHA1) et appliquer le patch à l'envers (git apply -R filename.patch).

Si vous avez perdu le SHA1, voir How to recover a dropped stash in Git?

+0

Comment créer un fichier patch à partir de la commande format-patch? – meson10

+0

La commande donnée crée un patch pour le commit 'SHA1'. – adl

+1

Cela ne semble pas fonctionner pour les fusions; quand j'ai fait 'git stash pop' sur mon répertoire de travail sale, il a fusionné les changements cachés, donc' git format-patch SHA1' n'a rien fait. Des idées pour une solution de contournement? – Will

1

git stash pop fait 2 choses: git stash apply et git stash drop. Si vous pouvez annuler le drop, en utilisant this question and answers, il vous suffira d'annuler le apply. Je ne suis pas sûr de savoir comment faire cela, mais vous pourriez regarder dans git rebase. mais adl fait.

Questions connexes