Git : Supprimer ou remplacer le dernier commit

Il a été envoyé sur un autre dépôt

Malheureusement ce cas-là est fréquent et assez pénible à gérer. C'est le cas, où on va devoir bidouiller pour annuler le commit. Cette bidouille revient en fait à effectuer le commit inverse de celui qu'on veut supprimer.
C'est-à-dire que ce commit va supprimer les lignes qui ont été ajoutées, et remodifier les lignes qui ont été modifiées.

git revert HEAD
Un nouveau commit sera créé, ce commit contiendra les modifications inverses de HEAD.
L'option --no-commit permet de ne pas effectuer de commit automatique et permet éventuellement d'effectuer d'autres modifications.

Il n'a pas été envoyé sur un dépôt distant

En utilisant git commit --amend

Si le commit n'a pas été envoyé sur un dépôt distant, il est tout à fait possible de le modifier, sans devoir passer par un commit inverse. Il faut effectuer les modifications qui ont été oubliées, ou qui n'avaient pas lieu d'être puis commiter en utiliser l'argument --amend :

git commit --amend
Après cette commande, Git redemandera un nouveau message de commit. Rien n'empêche d'utiliser celui qui a déjà été utilisé.

Et en utilisant git reset

Si le commit est bon à mettre à la poubelle et que les modifications qu'il comporte sont totalement inutiles, il est possible d'utiliser la commande suivante :

git reset --hard HEAD^
Cette commande aura pour effet de remonter l'historique sur le commit parent de HEAD en mettant à jour le répertoire de travail et l'index (en d'autres termes, supprimer le dernier commit). Le commit ne sera réellement supprimé que lorsque le garbage collector de Git le supprimera.
Il est aussi possible de supprimer le dernier commit, tout en conservant ses modifications dans le répertoire de travail, pour cela il faut utiliser la commande suivante :
git reset --mixed HEAD^
J'espère que cet article vous sera utile. Faites attention à ne pas commiter n'importe quoi !
Pour obtenir plus d'information sur Git, vous pouvez commander mon dernier livre : Git : maitrisez la gestion de vos versions.