Git protip : réparer le dernier commit avec "--amend"
Par Maxime Bréhin • Publié le 26 septembre 2022 • 2 min

Ah, les fautes d’inattention, les oublis et autres messages mal rédigés… Toutes ces situations où on a créé un commit pour s’apercevoir dans la foulée qu’on a foiré !

Heureusement l’option --amend de la commande commit est là pour nous sauver 😮‍💨 !

Conceptuellement, Git fera pour nous un pas en arrière puis un pas en avant. Il va revenir à l’état d’avant validation, donc avec nos fichiers stagés (équivalent de git reset --soft HEAD~1), et revalidera automatiquement avec tous les fichiers stagés (dont les nouveaux, si on avait ajouté au stage avant de lancer le --amend). En gros, il va annuler notre commit et en créer un nouveau à la place, nous permettant des modifications intermédiaires :

  • ajout / retrait de fichiers ;
  • mise à jour des méta-données (généralement le message de commit).

En amendant on déréférence le commit actuel au profit d’un nouveau, dérivé de celui-ci

La commande est simple :

git commit --amend

Voyons les cas de figure classiques.

Ajout d’un fichier oublié

Le cas le plus courant est l’oubli d’un fichier, très souvent non suivi et non ajouté à la volée lors d’un git commit -am '…'.

La procédure est alors la suivante :

  • on ajoute le ou les fichiers au stage : git add <les-chemins> ;
  • on annule et remplace le commit : git commit --amend

Mise à jour du message

Qui n’a jamais fait de faute de frappe ni oublié une référence importante comme un numéro de ticket dans un message de commit ? Personnalement je suis assez champion de ça.

Dans cette situation on va devoir :

  • vérifier que notre stage est vide (on ne veut pas embarquer des choses dans le commit revisité) ;
  • lancer la commande git commit --amend, éventuellement avec le message « à la volée » si on souhaite le réécrire entièrement (git commit --amend -m 'Nouveau message').

Tu veux en savoir plus sur la manière dont est construit un commit ? On a un article qui parle de ça !.

Tu veux aller plus loin et maîtriser pleinement les fondamentaux de Git ou être accompagné pour garantir la qualité de tes projets grâce à une bonne mise en place de Git ? On peut t’aider ou te former, il suffit de nous décrire ton besoin !