14 votes

Comment récupérer l'index après un git stash / git stash pop ?

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 ?

9voto

user Points 1438

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.

6voto

maliayas Points 1964

Cela fera l'affaire :

git stash apply --index

Editer : Si l'on considère que l'index est déjà perdu, il convient d'exécuter une commande git fsck --unreachable et inspecter les derniers commits qu'il donne. Vous devez pouvoir y voir votre index perdu. Après cela, vous pouvez git cherry-pick il.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X