Makina Blog
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 25 au 26 février 2025
Voir la formationActualités en lien
Comment compresser son code applicatif de manière efficace avec Nginx et Brotli ?
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.
SSO Keycloak : Ajouter un contrôle d'accès au niveau des flux d'authentification
Découvrez ici comment ajouter un contrôle d'accès grâce au SSO Keycloak
Accéder à sa base de données PostgreSQL depuis QGis ou pgAdmin de manière sécurisée
Comment interconnecter ses outils de travail sans mettre en péril la sécurité du système informatique ? L’objectif de cet article est de présenter une manière sécurisée de connecter QGis ou pgAdmin à une base de données PostgreSQL, afin d’atteindre le meilleur compromis entre praticité et sécurité.