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
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'.
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.