La manipulation de l'historique est très courante pour les développeurs qui travaillent régulièrement avec Git. En effet, les développeurs doivent souvent supprimer les commits de l’historique Git. Heureusement, Git fournit de nombreuses commandes pour rendre cette opération possible.
Allons-y 😎.
Étape 0 - Préparation
Avant de manipuler l'historique Git, assurez-vous que votre répertoire de travail est exempt de toute modification à l'aide de la commande git status .
Étape 1 : Supprimer les commits localement
Pour supprimer des commits d'un serveur distant, vous devrez d'abord les supprimer de votre historique local.
1.1 Pour les commits consécutifs par le haut
Si les commits que vous souhaitez supprimer sont placés en haut de votre historique de commits, utilisez la commande git reset --hard
avec l'objet HEAD
et le nombre de commits que vous souhaitez supprimer.
git reset --hard HEAD~1
Cette commande supprimera le dernier commit .
git reset --hard HEAD~3
Cette commande supprimera les trois derniers commits .
Vous pouvez également supprimer jusqu'à un commit spécifique en utilisant le hachage d'un commit, comme ceci :
git reset --hard <hash>
1.2 Pour les commits non consécutifs
Si toutefois vous souhaitez supprimer les commits non consécutifs, vous devrez utiliser un rebase interactif.
- [ ] Recherchez le dernier hachage de validation contenant tous les commits que vous souhaitez supprimer à l'aide de la commande
git reflog
. - [ ] Démarrez un rebase interactif avec
git rebase -i <hash>
. - [ ] Dans l'écran d'édition, recherchez les lignes de validation que vous souhaitez supprimer et supprimez-les.
- [ ] Enregistrez et quittez (vous devrez peut-être résoudre les conflits)
- [ ] Terminez le rebase interactif avec
git rebase --continue
ou recommencez en abandonnant le rebase .
Étape 2 - Supprimer les commits de la télécommande
Pour supprimer les commits de la télécommande, vous devrez transmettre vos modifications locales à la télécommande à l'aide de la commande git push .
git push origin HEAD --force
Étant donné que votre historique local diverge de l'historique distant, vous devez utiliser l'option force
.
Dernières pensées
Comme vous pouvez le constater, Git facilite la suppression des commits d'un serveur distant.
Cependant, vous devez être prudent lorsque vous utilisez la commande git push
avec l'option force
car vous pourriez perdre votre progression si vous n'êtes pas prudent.
Merci pour la lecture!