J'ai caché quelques modifications locales avant de faire une fusion compliquée, ai fait la fusion, puis j'ai bêtement oublié de valider avant de lancer git stash pop
. La pop a créé des problèmes (appels de méthode incorrects dans une grande base de code) qui se révèlent difficiles à dépister. J'ai couru git stash show
, donc je sais au moins quels fichiers ont été modifiés. Si rien d’autre, j’imagine que c’est une leçon à retenir.
Ma question: est-il possible d'annuler le stash pop sans annuler la fusion?
Essayez d'utiliser Comment récupérer une réserve cachée dans Git? pour trouver la réserve que vous avez trouvée. Je pense qu'il y a toujours deux commits pour une réserve, car cela préserve l'index et la copie de travail (le commit de l'index sera souvent vide). Ensuite git show
les pour voir le diff 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:
Après cela, il ne vous reste que les modifications de la réserve que vous avez abandonnée trop tôt.