On a tous eu nos petits moments d’hésitation lorsque l’on commit avec git, surtout pour écrire le message. Parfois on ne sait pas trop comment expliquer ce qu’on a fait comme changement, ou alors on part dans une grande explication et on dépasse largement les 50 caractères. Mais alors c’est quoi un bon message de commit ?

À titre personnel uniquement, je dirais qu’on bon message se résume à plusieurs choses :

  • Il ne doit pas dépasser 50 caractères.
  • Il doit commencer par un verbe d’action.
  • Il doit informer ce qu’il apporte de bon et pas expliquer le changement
  • Bannir les “+” et les “et”

La limite de caractères

En effet, un bon commit c’est avant tout une phrase claire et concise parce qu’il doit se lire rapidement.

Github coupe tous les messages de commits qui font plus de 50 caractères et affiche des points de suspension, il faut cliquer pour voir la suite du message.

Le nombre de caractères limite est une bonne indication de la taille de la diff du commit (ratio taille diff / taille message). Si vous avez trop de chose à dire sur ce commit c’est qu’il est probablement trop grand.

Si vraiment il est nécéssaire d’expliquer davatange de choses alors il faut utilise le commit body et la vous pouvez y aller il n’y a pas de limite.

Le verbe d’action

Ici ça dépend de la langue qu’on utilise pour le commit. Généralement dans la majorité des cas, on commit en anglais mais il arrive parfois d’utiliser le français.

Le but c’est de faire en sorte que votre commit réponde à une phrase en utilisant des verbes d’actions comme ajouter, supprimer etc…

La conjugaison des verbes diffère en fonction de la langue, en effet en anglais :

After applying this commit, it will insert commit message here

Testez avec ces commits là par exemple :

7d7ae65 Yadomi add default configuration files
be521b7 Yadomi create a route for user profile

Et français on aurait :

Après l’avoir appliqué, ce commit insert commit message here

7d7ae65 Yadomi ajoute les fichiers de configuration par défaut
be521b7 Yadomi supprime la dépendance jQuery

On remarque qu’en anglais c’est quand même plus simple puisque d’une manière générale on obtient des phrases plus courte mais aussi tous les verbes ne sont pas conjugué.

Il doit expliquer ce qu’il apporte et non ce qu’il fait

C’est sûrement le plus important mais aussi le plus difficile à mettre en place. En effet utilisons cet diff de modification css comme exemple:

.user .user-picture {
display:inline-block;
font-size:12px;
- margin-bottom: 20px;
+ margin-bottom:30px;
+vertical-align:baseline;
}

Le pire message de commit qu’on pourrait avoir ici serait :

update ccs

Ou pire encore

add margin + vertical-align

Ou encore :

update user picture style

Bref je pense que vous avez compris. Ici tous ces message de commit n’apportent rien et ne font que décrire avec des mots ce que la diff nous montre or le but du message de commit est d’expliquer pourquoi cette diff à lieu et pourquoi il est important de l’appliquer. On pourrait donc avoir un message de la sorte :

align user picture with main header
aligne la photo de profile avec le header

Ici, on prend en compte le contexte de la diff et sa raison d’être.

Bannir certaines habitudes

Le mot “et” dans un commit est à bannir absolument. Par feignantise il arrive parfois d’avoir ce genre de chose :

Ajoute fichier de config et fix css

Ça c’est une abomination. D’une part par ce commit aurait très bien pu être coupé en deux parce qu’il n’ont aucun rapport entre eux. Mais aussi parce que la deuxième partie n’est pas explicite du tout. Tu as modifié du css ? D’accord mais c’est tout ce que je sais.

Le mot et ou le symbole + doit sonner comme une alarme dans sa tête quand on l’écrit dans un commit. Il est là pour vous dire de split votre commit.

Voila, ces quelques petites régles permettent d’avoir un historique un peu plus propre (et évite des git blame faux positif).