Rétablir un dépôt Git par l'ID du commit

John Wachira 15 février 2024
  1. Passer temporairement à un commit Git
  2. Rétablir un référentiel Git par ID de validation
Rétablir un dépôt Git par l'ID du commit

Cet article traitera de la restauration d’un référentiel Git basé sur l’ID de validation. Nous devrons peut-être revenir à un commit plus ancien pour examiner son état ou supprimer les commits qui le suivent.

Discutons des deux scénarios.

Passer temporairement à un commit Git

Nous utilisons la commande git checkout pour passer temporairement à un ancien commit tout en mentionnant l’identifiant du commit.

$ git checkout <Commit ID>

Cette commande va détacher le HEAD de notre repo (nous ne sommes pas checkés sur une branche). Dans cet état, nous ne pouvons pas faire de commits.

Comme indiqué ci-dessous, nous devons créer une nouvelle branche basée sur le commit.

$ git switch -c <new-branch-name>

Nous pouvons combiner la commande ci-dessus pour faire la même chose que celle indiquée ci-dessous.

$ git checkout -b <new-branch-name> <Commit ID>

Rétablir un référentiel Git par ID de validation

Nous utilisons la commande git reset avec le drapeau --hard tout en transmettant l’ID de validation vers lequel nous voulons revenir. Exécutez la commande ci-dessous.

$ git reset --hard <Commit ID>

L’exécution de cette commande supprimera tous nos commits récents jusqu’au commit mentionné. La commande supprimera également toutes les modifications non validées dans votre index.

Si vous souhaitez conserver les modifications, procédez comme suit :

$ git stash
$ git reset --hard <Commit ID>
$ git stash pop

Si vous souhaitez mettre à jour le référentiel distant, utilisez la commande git push ci-dessous.

$ git push -f

Soyez prudent avec cette commande, car elle remplacera le référentiel distant en fonction de votre référentiel local. Prenons un exemple.

Dans l’exemple ci-dessous, nous tenterons de rétablir notre référentiel git Delftscopetech basé sur un identifiant de validation. Lançons la commande git log pour lister tous les commits de notre repo.

$ git log --oneline

historique du dépôt

Comment s’y prendrait-on si on voulait revenir à la Fourth Update ?

Nous exécutons la commande git reset dans le contexte ci-dessous.

$ git reset --hard df90895
HEAD is now at df90895 Fourth Update

La sortie montre que notre HEAD est maintenant à la Fourth Update. Nous pouvons exécuter la commande git push pour pousser les modifications vers notre référentiel distant.

Si vous souhaitez annuler la réinitialisation, suivez ceci.

Tout d’abord, nous exécutons la commande git reflog pour voir toutes les mises à jour de référence dans notre référentiel.

$ git reflog

git reflog

Votre sortie sera similaire. Nous pouvons voir notre réinitialisation à HEAD@{0}.

Pour revenir en arrière, nous exécutons la commande git reset comme indiqué ci-dessous.

$ git reset HEAD@{1}

Vérifions maintenant notre historique de validation.

$ git log --oneline

historique du dépôt 2

Notre HEAD est de retour à Sixth Update.

En un mot, il est très facile de rétablir votre référentiel Git en fonction de l’ID de validation. Si vous souhaitez passer temporairement à un commit, utilisez la commande git checkout.

Pour revenir à un commit spécifique, utilisez la commande git reset --hard et indiquez le hash du commit.

Auteur: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Article connexe - Git Reset