349 votes

Comment puis-je basculer mon dépôt git vers un commit particulier ?

Dans mon dépôt git, j'ai fait 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 revenir en arrière sur mes 4 derniers commits localement dans une branche ? En d'autres termes, comment puis-je créer une branche sans mes 4 derniers commits (en supposant que j'ai le SHA de ce commit à partir du git log) ?

408voto

Artefacto Points 50896

Pour créer une nouvelle branche (localement) :

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

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

    git checkout -b new_branch HEAD~4

Une fois que votre nouvelle branche est créée (localement), vous pourriez vouloir répliquer ce changement sur une branche distante du même nom : Comment puis-je pousser mes modifications vers une branche distante ?


Pour en éliminant les trois derniers commits voir Réponse de Lunaryorn ci-dessous .


Pour déplacer votre branche actuelle HEAD vers le commit spécifié sans créer une nouvelle branche voir Réponse d'Arpiagar ci-dessous .

317voto

arpiagar Points 39

Toutes les commandes ci-dessus créent une nouvelle branche et le dernier commit est celui spécifié dans la commande, mais juste au cas où vous voulez votre branche actuelle HEAD pour passer au commit spécifié, voici la commande :

 git checkout <commit_hash>

Il détache et de pointer le HEAD au commit spécifié et évite de créer une nouvelle branche lorsque l'utilisateur veut juste voir l'état de la branche jusqu'à ce commit particulier.


Vous pourriez alors vouloir revenir au dernier commit et corriger le HEAD détaché :

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

116voto

lunaryorn Points 13621

Si vous voulez jeter les quatre derniers commits, utilisez :

git reset --hard HEAD^^^^

Alternativement, vous pouvez spécifier le hash d'un commit que vous voulez réinitialiser :

git reset --hard 6e559cb

28voto

radzimir Points 173

Comment puis-je revenir en arrière sur mes 4 commits précédents dans une branche ?

Ce qui signifie que vous ne créez pas de nouvelle branche et que vous passez en état détaché. La nouvelle façon de faire est :

git switch --detach revison

22voto

KingCrunch Points 45168

Il suffit de vérifier le commit à partir duquel vous voulez que votre nouvelle branche démarre et de créer une nouvelle branche.

git checkout -b newbranch 6e559cb95

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