305 votes

git revert back to certain commit

Comment puis-je rétablir tous mes fichiers sur ma copie locale à un certain commit ?

commit 4a155e5b3b4548f5f8139b5210b9bb477fa549de
Author: John Doe <Doe.John.10@gmail.com>
Date:   Thu Jul 21 20:51:38 2011 -0500

C'est le commit sur lequel j'aimerais revenir. Toute aide serait la bienvenue !

0 votes

@WilliamPursell - Pourquoi avez-vous supprimé votre réponse ? La vôtre semble être celle qui est la plus sensée. Après la réversion, le PO peut commiter et pousser (c'est-à-dire qu'il a un repo fonctionnel). Toutes les réponses ci-dessous mettent le repo dans un état où rien d'utile ne peut en être fait.

462voto

Andy Points 9657

git reset --hard 4a155e5 Ça ramènera le HEAD là où vous voulez être. Il peut y avoir d'autres références avant ce moment que vous devrez supprimer si vous ne voulez pas que quelque chose pointe vers l'historique que vous venez de supprimer.

1 votes

J'ai utilisé cette approche, mais que devez-vous faire pour pouvoir commettre en toute sécurité sur une autre machine ? (au lieu de git pull -f origin master )

0 votes

@ChristopheDeTroyer Je ne comprends pas votre question.

0 votes

Donc, cela change réellement l'histoire ? Si c'est le cas, je dois l'ajouter à ma liste de priorités. git rebase y git commit --amend

62voto

Kit Ho Points 4632

Vous pouvez rétablir tous vos fichiers sous votre répertoire de travail et votre index en tapant la commande suivante

git reset --hard <SHAsum of your commit>

Vous pouvez également taper

git reset --hard HEAD #your current head point

ou

git reset --hard HEAD^ #your previous head point

J'espère que cela vous aidera

2 votes

revert n'est pas la commande correcte. revert applique un nouveau commit qui annule un commit précédent. Il ne prend pas de --hard option.

0 votes

@Charles : Pourquoi ce n'est pas correct ? Il prend l'option --hard.

5 votes

Lisez la documentation, revert annule les changements introduits par un seul commit, il ne réinitialise pas l'index et l'arbre de travail. à un engagement particulier qui correspond à ce que le demandeur recherche. C'est ce que reset fait. reset prend un --hard option.

44voto

marcelog Points 3234

http://www.kernel.org/pub/software/scm/git/docs/git-revert.html

en utilisant git revert <commit> créera un nouveau commit qui annulera celui que vous ne voulez pas avoir.

Vous pouvez spécifier une liste de commits à rétablir.

Une alternative : http://git-scm.com/docs/git-reset

git reset réinitialisera votre copie au commit que vous voulez.

0 votes

Plus sûr que git reset --hard et ce dernier est plus propre.

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