C'est quoi un bon message de commit ?
On a tous eu nos petits moments d'hésitation lorsque l'on commit avec git, surtout pour écrire le fameux message. Parfois on ne sait pas trop comment expliquer ce qu'on a fait comme changement alors souvent 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'apporte le changement, pas le changement en lui même.
- 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 lorsque l'on parcours l'histoirique ou lors d'un git blame
.
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. Ce n'est jamais très plaisant et ça fait perdre du temps.
Le nombre de caractères limite est une bonne indication. Si vous avez trop de chose à dire sur ce commit c'est que la diff est probablement trop grande, vous avez donc tout interêt à faire être plus selectif sur la diff (en utilisant git add -p
par exemple).
Si vraiment il est nécéssaire d'expliquer davatange de choses alors il faut utiliser le commit body. Il n'y a pas de limite et vous pouvez faire des retours à la ligne.
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 ajoute, supprime etc…
La conjugaison des verbes diffère en fonction de la langue, en effet en anglais :
7d7ae65 Yadomi add default configuration files
be521b7 Yadomi remove jquery dependency
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 plus court.
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 :
be521b7 Yadomi update css
Ou pire encore
be521b7 Yadomi add margin + vertical-align
Ou encore :
be521b7 Yadomi update user picture style
Bref je pense que vous avez compris. Ici tout ces messages 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 existe et pourquoi il est important de l'appliquer. On pourrait donc avoir un message de la sorte :
be521b7 Yadomi align user picture with main header
Ici, on prend en compte le contexte de la diff et sa raison d'être. En blamant le commit, vous savez pourquoi l'auteur a fait des modifications sur le CSS.
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, le commit aurait très bien pu être coupé en deux caril n'ont aucun rapport entre eux. Mais aussi parce que la deuxième partie n'est pas explicite du tout et revient au problème plus haut.
Le mot et ou le symbole + sont donc à proscrire.
Voila, ces quelques petites régles permettent d'avoir un historique un peu plus propre (et évite des git blame faux positif).