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
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
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
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.
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