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?
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.
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.
si votre Fusion n'était pas trop compliquée une autre option serait de:
- déplacer tous les changements, y compris les changements de fusion de nouveau à stash en utilisant" git stash "
- lancer la fusion à nouveau et de commettre vos changements (sans les changements de la cachette abandonnée)
- 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.