L'annulation accidentelle git stash pop

j'ai caché quelques changements locaux avant de faire une fusion compliquée, j'ai fait la fusion, puis j'ai bêtement oublié de commettre avant de lancer git stash pop . Le menu créé quelques problèmes (mauvais appels de méthode dans une grosse base de code), qui se révèlent difficiles à dépister. J'ai lancé git stash show , donc je sais au moins quels fichiers ont été changés. Si rien d'autre, je suppose que c'est une leçon à en commettre d'autres.

ma question: Est-il possible de défaire le pop stash Sans aussi défaire la fusion?

156
demandé sur nren 2011-07-01 08:15:27

3 réponses

Essayez d'utiliser Comment faire pour récupérer la perte de la ranger dans Git? pour trouver la cachette que vous avez ouverte. Je pense qu'il y a toujours deux commits pour une stash, puisqu'elle conserve l'index et la copie de travail (donc souvent la commit index sera vide). Puis git show pour voir la différence et utiliser patch -R pour les désappliquer.

59
répondu Ben Jackson 2017-05-23 12:02:40

de git stash --help

Recovering stashes that were cleared/dropped erroneously
   If you mistakenly drop or clear stashes, they cannot be recovered through the normal safety mechanisms. However, you can try the
   following incantation to get a list of stashes that are still in your repository, but not reachable any more:

       git fsck --unreachable |
       grep commit | cut -d\  -f3 |
       xargs git log --merges --no-walk --grep=WIP

cela m'a aidé mieux que la réponse acceptée avec le même scénario.

30
répondu kachar 2013-10-28 16:08:18

si votre Fusion n'était pas trop compliquée une autre option serait de:

  1. déplacer tous les changements, y compris les changements de fusion de nouveau à stash en utilisant" git stash "
  2. lancer la fusion à nouveau et de commettre vos changements (sans les changements de la cachette abandonnée)
  3. lancez un" git stash pop " qui devrait ignorer tous les changements de votre Fusion précédente puisque les fichiers sont identiques maintenant.

après que vous êtes laissé avec seulement les changements de la cachette que vous avez laissé tomber trop tôt.

0
répondu markus 2018-01-31 16:20:52