Comment puis-je transférer mon repository git vers un commit particulier?

Dans mon repository git, j’ai effectué 5 commits, comme ci-dessous dans mon journal git:

commit 4f8b120cdafecc5144d7cdae472c36ec80315fdc Author: Michael Date: Fri Feb 4 15:26:38 2011 -0800 commit b688d46f55db1bc304f7f689a065331fc1715079 Author: Michael Date: Mon Jan 31 10:37:42 2011 -0800 commit b364f9dcec3b0d52666c4f03eb5f6efb7e1e7bda Author: Michael Date: Wed Jan 26 13:33:17 2011 -0800 commit 4771e26619b9acba3f059b491c6c6d70115e696c Author: Michael Date: Wed Jan 26 11:16:51 2011 -0800 commit 6e559cb951b9bfa14243b925c1972a1bd2586d59 Author: Michael Date: Fri Jan 21 11:42:27 2011 -0800 

Comment puis-je annuler mes 4 commits précédents localement dans une twig? En d’autres termes, comment puis-je créer une twig sans mes 4 derniers commits (supposons que j’ai le SHA de ce commit à partir de git log)?

Pour créer une nouvelle twig (localement):

  • Avec le hash de validation (ou une partie de celui-ci)

     git checkout -b new_branch 6e559cb 
  • ou pour revenir 4 commet de HEAD

     git checkout -b new_branch HEAD~4 

Une fois votre nouvelle twig créée (localement), vous souhaiterez peut-être répliquer cette modification sur une télécommande du même nom: Comment puis-je transférer mes modifications vers une succursale distante?


Pour rejeter les trois derniers commits , voir la réponse de Lunaryorn ci-dessous .


Pour déplacer votre twig actuelle HEAD vers le commit spécifié sans créer de nouvelle twig , consultez la réponse d’Arpiagar ci-dessous .

Toutes les commandes ci-dessus créent une nouvelle twig et la dernière validation étant celle spécifiée dans la commande, mais juste au cas où vous souhaiteriez que votre twig actuelle HEAD se déplace vers la validation spécifiée, voici la commande

  git checkout  

Il détache et pointe le HEAD vers le commit spécifié et évite de créer une nouvelle twig lorsque l’utilisateur veut simplement visualiser l’état de la twig jusqu’à ce que ce commit particulier.


Vous voudrez peut-être alors revenir au dernier commit et corriger le HEAD détaché:

Réparer une tête détachée Git?

Si vous voulez jeter les quatre derniers commits, utilisez:

 git reset --hard HEAD^^^^ 

Vous pouvez également spécifier le hachage d’une validation à réinitialiser sur:

 git reset --hard 6e559cb 

Il suffit de vérifier le commit que vous souhaitez que votre nouvelle succursale commence et de créer une nouvelle succursale

 git checkout -b newbranch 6e559cb95