📝 Les Conventional Commits : Pour des commits structurés et efficaces
Mouhamed Lamotte

Les Conventional Commits sont une convention de nommage des messages de commit permettant de standardiser la gestion des historiques de version. Ils facilitent la collaboration en rendant les changements plus lisibles et permettent une meilleure automatisation des pipelines CI/CD.
Dans cet article, nous allons détailler en profondeur :
✔️ La structure des Conventional Commits
✔️ Les types de commit disponibles
✔️ L'usage des scopes
✔️ Des exemples concrets
✔️ L'intégration dans un workflow Git
🔍 1. Qu'est-ce qu'un Conventional Commit ?
Un Conventional Commit est un message de commit structuré selon un format précis. Il permet de comprendre immédiatement l'impact d'une modification et facilite la génération automatique des changelogs.
Il suit une syntaxe bien définie :
<type>(<scope>): <description>
[optionnel] Corps du commit
[optionnel] Footer (ex: références aux issues, notes de breaking changes)
✅ Exemple de commit bien formaté :
feat(auth): ajout de la vérification en deux étapes
Ajout d’un mécanisme d’authentification à deux facteurs pour renforcer la sécurité des utilisateurs.
🏷️ 2. Les types de commit
Les types permettent d’indiquer la nature du changement apporté. Voici les principaux :
| Type | Description |
feat | Ajout d'une nouvelle fonctionnalité |
fix | Correction de bug |
docs | Modification de la documentation |
style | Changement lié au style du code (indentation, espaces, etc.), sans impact sur le comportement |
refactor | Refactorisation du code sans ajout de fonctionnalité ni correction de bug |
perf | Amélioration des performances |
test | Ajout ou modification de tests |
chore | Mise à jour de configurations, dépendances, ou tâches d’entretien |
ci | Changements liés à l’intégration continue (ex: modification du pipeline GitHub Actions) |
build | Modification affectant le système de build ou les dépendances |
revert | Annulation d'un commit précédent |
BREAKING CHANGE | Indique un changement majeur qui casse la rétrocompatibilité |
✅ Exemple de commit fix :
fix(api): correction de la validation des paramètres de requête
Correction d’un bug empêchant la validation correcte des paramètres dans l’API REST.
✅ Exemple de commit chore :
chore(deps): mise à jour de axios vers la version 1.5.0
✅ Exemple de commit BREAKING CHANGE :
feat(database): suppression du champ `username`
BREAKING CHANGE: Le champ `username` a été supprimé de la table `users`. Désormais, seuls les emails sont utilisés pour l’identification.
🏗️ 3. Les scopes : Définir la zone impactée
Le scope est optionnel mais recommandé. Il précise la partie du projet affectée par le commit.
Voici quelques exemples de scopes couramment utilisés :
| Scope | Explication |
auth | Partie authentification |
api | API du projet |
db | Base de données |
ui | Interface utilisateur |
backend | Code backend |
deps | Dépendances du projet |
ci | Intégration continue |
tests | Tests automatisés |
docs | Documentation |
build | Configuration du build |
✅ Exemple de commit avec un scope ui :
feat(ui): ajout d'un bouton de connexion rapide
✅ Exemple de commit avec un scope backend :
fix(backend): correction du bug sur l'authentification JWT
✨ 4. Exemples concrets de messages de commit
Exemple 1 : Ajout d’une nouvelle fonctionnalité
feat(auth): implémentation de l'authentification OAuth2
Ajout d'un système d'authentification OAuth2 pour permettre la connexion via Google et Facebook.
Exemple 2 : Correction d’un bug
fix(ui): correction du bug d'affichage sur mobile
Résolution d'un problème où le bouton "Se connecter" dépassait de l’écran sur iOS.
Exemple 3 : Mise à jour d’une dépendance
chore(deps): mise à jour de React vers la version 18.2.0
Exemple 4 : Mise à jour de la documentation
docs(readme): ajout d'une section sur l'installation du projet
🚀 5. Intégration des Conventional Commits dans un workflow Git
📌 Utiliser un linter de commits
Vous pouvez utiliser commitlint pour forcer le respect du format Conventional Commits :
1️⃣ Installez commitlint et husky :
npm install --save-dev @commitlint/{config-conventional,cli} husky
2️⃣ Ajoutez un fichier de configuration .commitlintrc.json :
{
"extends": ["@commitlint/config-conventional"]
}
3️⃣ Activez husky pour vérifier les commits avant leur enregistrement :
npx husky install
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit $1'
📌 Générer automatiquement un changelog
Vous pouvez utiliser standard-version pour générer un changelog basé sur les Conventional Commits :
npm install --save-dev standard-version
Puis exécutez :
npx standard-version
🎯 6. Conclusion
Adopter Conventional Commits améliore la lisibilité des historiques Git, facilite la collaboration entre développeurs et permet d'automatiser certaines tâches comme la génération de changelogs.
En suivant cette convention, vous rendez votre projet plus organisé et plus facile à maintenir sur le long terme.
👉 Mettez en place commitlint et standard-version pour une adoption optimale ! 🚀