Supprimer le commit du référentiel distant dans Git
- Supprimer le commit du référentiel local dans Git
- Supprimer le commit du référentiel distant dans Git
Parfois, lorsque nous travaillons avec Git, nous réalisons que des commits ont mal tourné et doivent être supprimés. La raison pourrait être que les clients ne veulent pas que cela fonctionne dans le produit.
Soit nous avons introduit un bogue, soit nous devons retravailler car nous avons commis la mauvaise implémentation.
Cet article explique comment nous pouvons supprimer les référentiels locaux et distants et nettoyer tous ces référentiels à l’aide de la commande Git.
Dans Git, nous pouvons supprimer des commits via deux procédures différentes. Et ces procédures dépendent des modifications, qu’elles soient poussées ou non vers la branche distante.
Supprimer le commit du référentiel local dans Git
Si nos modifications n’ont pas encore été transmises au référentiel distant, nous pouvons supprimer le commit récent localement via la commande suivante :
git reset --hard HEAD~1
La commande mentionnée ci-dessus annulera toutes les modifications apportées au dossier (arbre de travail) et déplacera le HEAD
vers le dernier commit avant le HEAD
.
Si nous voulons supprimer les commits jusqu’à un commit particulier, nous lancerons git log
pour rechercher l’identifiant de commit particulier. Après cela, nous supprimerons ces commits en utilisant la commande mentionnée suivante :
git reset --hard <sha1-commit-id>
Cette commande mentionnée précédemment supprimera toutes les modifications apportées à l’arbre de travail et déplacera le HEAD
vers le commit que nous avons choisi.
Supprimer le commit du référentiel distant dans Git
Si nous voulons supprimer le commit du dépôt distant, nous allons forcer-pousser
le nouveau commit HEAD
. Alternativement, si nous avons déjà poussé nos modifications vers le référentiel distant, nous exécuterons la commande suivante :
git push origin HEAD --force
Si quelqu’un d’autre a retiré cette branche, il vaut mieux démarrer une nouvelle branche ; sinon, il le combinera dans leur travail, et dans ce cas, nous devons repousser à nouveau la même branche.
Cela supprimera le commit des deux référentiels : local et distant. Si nous devons le supprimer à distance uniquement et non à partir de local, nous exécuterons la commande mentionnée suivante :
git push origin +HEAD^:branch_name
Avant d’exécuter ces commandes, nous devrions jeter un coup d’œil car cela supprimera toutes nos modifications de répertoire de travail.
Après la suppression, si nous souhaitons rechercher à nouveau ce commit, de préférence, il serait présent dans <git reflog>
à moins que notre référentiel n’ait été ramassé.
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn