Makina Blog

Le blog Makina-corpus

Git : annuler proprement un commit après un push


Profitez de cet article pour savoir comment annuler proprement un commit après un push.

Ce qu'il faut éviter

Pour annuler des commits, il existe la commande git reset.

git reset --hard HEAD~1
HEAD is now at 444b1cf Rhoo

Celle-ci est pertinente tant que les commits n'ont pas été poussés. Git vous retiendra au push d'ailleurs :

git push
To /tmp/repo
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '/tmp/repo'

En effet, à partir du moment où un commit existe sur le serveur, il est potentiellement utilisé par des collaborateurs (mergé, à la base d'une branche, etc.). On pourrait faire le sale et forcer le push :

git push -f
Total 0 (delta 0), reused 0 (delta 0)
To /tmp/repo
 + b67c343...444b1cf master -> master (forced update)

Mais il y a beaucoup mieux !

Ce qu'il faut faire

Annuler un commit, c'est finalement appliquer l'inverse de son diff !

On peut rediriger le diff des commits à annuler vers la commande patch --reverse :)

git diff HEAD^ | patch --reverse

Pour faire plus simple, il y a git revert !

Par exemple pour annuler les trois derniers commits :

git revert HEAD~3..HEAD

Ou pour annuler un commit en particulier :

git revert 444b1cff

Il suffit alors de pousser proprement le commit obtenu sur le serveur. Les éventuels collaborateurs qui avaient basé leur travail sur les commits annulés devront gérer les conflits au moment venu…

Pour aller plus loin

Venez assister à notre formation Git !

Formations associées

Formations Outils et bases de données

Formation Git, gestionnaire de versions

Nantes Du 14 au 15 octobre 2025

Voir la Formation Git, gestionnaire de versions

Actualités en lien

Makina Corpus publie sa propre librai­rie d’au­then­ti­fi­ca­tion OpenID Connect pour Django

08/04/2025

Nous publions en logi­ciel libre notre inté­gra­tion du proto­cole OpenID Connect (OIDC) avec Django : django-pyoidc.
Voir l'article
Image
Encart librairie Django-pyoidc

DbTools­Bundle : sortie de la version 2

18/03/2025

Décou­vrez les nouveau­tés de la version 2 du DbTools­Bundle, au programme : version Stan­da­lone, Docker et Lara­vel
Voir l'article
Image

Comment compresser son code applicatif de manière efficace avec Nginx et Brotli ?

25/04/2023

Dans cet article, nous allons mettre en place un algorithme de compression des données textuelles plus efficace, que celui utilisé habituellement, pour réduire le poids d'une page web.

Voir l'article
Image
Encart Article Eco-conception

Inscription à la newsletter

Nous vous avons convaincus