Cet article explique comment supprimer des commits d'une branche Git.

1. réinitialisation de git

Ici, l'idée est de forcer la réinitialisation du répertoire de travail pour supprimer tous les commits qui viennent après le commit spécifié, puis de forcer le push :

git reset --hard [<commit>]

Vous pouvez faire référence à un commit via son ascendance, en utilisant son hachage SHA-1 complet, ou en fournissant le hachage partiel, qui doit comporter au moins 4 caractères et sans ambiguïté.

# Discard the first 4 commits
git reset --hard HEAD~4

Si ces validations sont présentes dans le référentiel distant, vous devrez forcer le push de la réinitialisation matérielle vers le référentiel distant.

# Force Push updates to the remote repository
git push [-f | --force]

Voici un exemple en direct :

git reset --hard

 
Notez que toutes les modifications apportées au répertoire de travail depuis le dernier commit sont silencieusement ignorées. Pour l'éviter, cachez d'abord vos modifications locales en appelant le git-stash commande, qui à son tour rétablit également le répertoire de travail dans le HEAD révision après avoir enregistré vos modifications locales. git reset --hard HEAD est souvent utilisé pour supprimer toutes les modifications non validées afin qu'elles correspondent à la validation la plus récente dans le répertoire de travail.

 
Si vous souhaitez conserver votre travail et uniquement annuler le commit, vous pouvez utiliser le --soft option.

git reset --soft [<commit>]

Ceci est démontré ci-dessous :

git reset soft

2. git revenir

Ce n'est pas une bonne idée de faire un push forcé sur un dépôt public ou partagé ; fait une git-revert Au lieu. Il crée un nouveau commit qui annule tous les changements de commit spécifiés, puis l'applique à la branche actuelle.

# Revert the commit 87859b5
git revert 87859b5
 
# Push to the remote
git push

Voici un exemple en direct :

git revert

3. Rebasage interactif

Un autre moyen plausible de supprimer des commentaires consiste à utiliser le git-rebase commande.

git rebase -i [<commit>]

L'exécution de la commande ci-dessus ouvrira un éditeur avec tous les commits de votre branche actuelle, qui viennent après le commit spécifié. Pour supprimer un commit, remplacez simplement la commande 'pick' par 'drop' et fermez l'éditeur. Vous pouvez également supprimer la ligne correspondante.

git rebase

 
La commande suivante supprimera un commit entier e78d8b1 en une seule fois à l'aide du --rebase-merges mode avec le --onto option.

git rebase -r --onto e78d8b1^ e78d8b1

rebase drop specific commit

Il s'agit de supprimer des commits d'une branche Git.