2011-07-22 3 views
103

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

commit 4a155e5b3b4548f5f8139b5210b9bb477fa549de 
Author: John Doe <[email protected]> 
Date: Thu Jul 21 20:51:38 2011 -0500 

Ceci est l'engagement auquel je souhaite revenir. toute aide serait une bouée de sauvetage!

+0

@Will iamPursell - Pourquoi avez-vous supprimé votre réponse? Le tien semble être celui qui est le plus raisonnable. Après la réversion, l'OP peut commettre et pousser (c'est-à-dire, il a un repo de travail). Toutes les réponses ci-dessous mettent le repo dans un état où rien d'utile ne peut en être fait. – jww

Répondre

166

git reset --hard 4a155e5 soulèverai le retourner à l'endroit où vous voulez être. Il se peut qu'il y ait d'autres références antérieures à ce moment que vous auriez besoin de supprimer si vous ne voulez pas que quelque chose pointe vers l'historique que vous venez de supprimer.

+0

J'ai utilisé cette approche, mais que devez-vous faire pour être en mesure de s'engager sur une autre machine? (à la place 'git pull -f origin master') –

+0

@ChristopheDeTroyer Je ne suis pas votre question. – Andy

+0

alors cela change l'histoire? Si oui, j'ai besoin de l'ajouter à ma liste de 'git rebase' et' git commit --amend' – the0ther

31

Vous pouvez revenir tous vos fichiers dans votre répertoire de travail et l'index en tapant suivant cette commande

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 

Hope it helps

+0

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

+0

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

+2

Lire la documentation, ['revert'] (http://www.kernel.org/pub/software/scm/git/docs/git-revert.html) annule les changements apportés par un seul commit, il ne réinitialise pas l'index et l'arbre de travail _à_ un commit particulier qui est ce que le demandeur recherche. C'est ce que fait ['reset'] (http://www.kernel.org/pub/software/scm/git/docs/git-reset.html). 'reset' prend une option' --hard'. –