2010-03-08 9 views
5

S'il y a eu des validations et de nombreux changements depuis un commit précédent, existe-t-il un moyen simple de tout ramener à l'état exact de ce commit précédent?Git: Comment tout rétablir exactement à l'état d'une validation préalable?

Si tel est le cas, est-il possible de revenir facilement à l'état actuel si je le souhaite?

Je me suis rendu compte que cet ancien commit est en fait le bon, et que je veux conserver tous les changements depuis, seulement pour référence, mais tous les futurs travaux seront basés sur cet ancien commit.

Répondre

6

On dirait que vous voulez mettre votre travail en cours sur une branche:

git branch saved_work 
git reset --hard previouscommit 

Maintenant, votre branche saved_work contient tout aprèspreviouscommit, et master est rembobiné à previouscommit.

1

vos changements en cours:

git commit 

checkout Alors le vieux commettras:

git checkout yourcommit 

Ajout d'une option -f détruira toutes les modifications locales.

2

Puisque vous voulez revenir à l'état antérieur:

git stash 
git checkout -b new_branch <tree-ish> 

ci-dessus permettra d'économiser vos modifications non validées et vous permettent de créer une nouvelle branche au commettras spécifique. Le travail que vous le souhaitez et plus tard, quand vous voulez changer à l'état antérieur:

git stash 
git checkout earlier_branch 
+0

Comment est-ce que je devrais régler cette branche vérifiée pour être le maître? Je me suis rendu compte que cet ancien commit est en fait le bon, et que je veux maintenir tous les changements depuis lors seulement pour référence, mais tout le travail futur sera basé sur cet ancien commit. –