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).
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 !.