Après avoir ajouté quelques modifications à l'index avec git add -p, j'ai ensuite lancé un git stash mais j'ai oublié d'ajouter --keep-index. Ensuite, j'ai stupidement fait un git stash pop, et toutes mes modifications de l'index ont disparu. Y a-t-il un moyen de récupérer l'index dans l'état où il était avant le git stash ?
Réponses
Trop de publicités?Lorsque vous venez de faire git stash pop
La dernière ligne de la sortie est la suivante :
Dropped refs/stash@{0} (ca82a6dff817ec66f44342007202690a93763949)
Si vous l'avez perdue, consultez Comment récupérer une cachette abandonnée dans Git ? pour trouver le hachage de la livraison.
Une fois que vous avez le hachis, soit :
-
Abandonnez tous les changements en cours (réserve appliquée) :
git reset --hard
Et réappliquer la réserve en utilisant son identifiant, cette fois avec l'index :
git stash apply ca82a6d --index
-
Réinitialiser uniquement l'index, l'intérêt étant que l'index est sauvegardé en tant que second parent de la réserve :
git reset ca82a6d^2 .
Remarquez le point à la fin. Si vous ne le spécifiez pas, il déplacera également HEAD vers l'index (l'index apparaîtra comme un commit). Dans ce cas, exécutez
git reset --soft HEAD@{1}
pour remettre le HEAD dans sa position précédente.