Git: revenir au statut de commit précédent

je suis confus. Je veux revenir à une précédente livraison que j'ai identifié dans "git log".

mais quand je fais "git checkout", Je ne me fais pas dire "commit". Rien ne change. Il me dit que je suis en mode tête détachée, mais les fichiers que je veux ne sont pas là.

Qu'est-ce que je fais de mal?

MrB

22
demandé sur MrBubbles 2011-02-15 16:29:07

2 réponses

git reset --hard <commit> à Partir de la page de manuel:

Correspond à l'arbre de travail et l'index à celle de l'arbre en train d'être réglé. Toute modification des dossiers dans l'arbre de travail depuis sont perdus.

git checkout est pour changer votre répertoire de travail en une autre branche ou commit. Cela ne déplacez pas l' HEAD il n'.

18
répondu Marc W 2014-04-22 23:00:55

DO NOT git reset-hard it is PERMANENT!

s'il vous Plaît utiliser

git stash -u 

à la place! Si vous avez un morceau de travail que vous avez zappé par accident, vous pouvez toujours le récupérer. Ceci n'est jamais poussé vers votre télécommande à moins que vous choisissiez de le faire en créant une branche et en la poussant vers le haut.

en outre, vous êtes sur la bonne voie, que vous pouvez utiliser git checkout pour accomplir la même chose. La syntaxe est

git checkout HEAD -- . 

mais il a le même problème que git reset --hard. Restez avec stash et vous économiserez perdre vos cheveux à l'avenir.

réponse plus longue

les solutions ci-dessus inversent toutes vos modifications. Cependant, avez-vous demandé comment se débarrasser de certains des changements. Je vais ajouter ceci pour être complet.

Pour ce faire, vous pouvez

git add file1 file2 file3
git stash save --patch

Vous allez maintenant être invité pour exactement ce que vous voulez faire pour disparaître... vers le bas pour obtenir ce niveau de granularité. Ainsi vous pouvez rejeter en toute sécurité" seules quelques modifications à un seul fichier si vous choisissez de le faire.

9
répondu Adam Dymitruk 2012-10-23 17:03:14