Format
Structure du message de commit
[portée optionnelle]: [corps optionnel] [pied de page optionnel(s)]
Explication des parties
typeCatégorie de changement (feat, fix, etc.)
scopeSection du code affectée (optionnel)
descriptionRésumé court à l'impératif
bodyExplication détaillée (optionnel, après une ligne vide)
footerMétadonnées comme BREAKING CHANGE ou références d'issues
Règles
Mode impératif"add feature" pas "added feature"
Type en minusculesfeat: pas Feat:
Sans point finalLa description ne se termine pas par "."
Ligne videSéparer corps/pied de page de la description
Types
Types principaux (pertinents pour SemVer)
featNouvelle fonctionnalité (déclenche une montée MINOR)
fixCorrection de bug (déclenche une montée PATCH)
Types étendus (convention commune)
buildSystème de build ou dépendances externes
choreTâches de maintenance (sans changement src/test)
ciConfiguration et scripts CI
docsChangements de documentation uniquement
perfAmélioration des performances
refactorChangement de code sans correction ni ajout
revertAnnule un commit précédent
styleFormatage, espaces blancs (pas le style CSS)
testAjout ou correction de tests
Portée
Utilisation de la portée
feat(auth): add OAuth2 login flow fix(parser): handle empty input gracefully docs(readme): update installation steps refactor(api): extract validation middleware
Conseils sur la portée
Nom de modulefeat(auth):, fix(parser):
Nom de couchefeat(api):, fix(db):
Zone fonctionnellefeat(search):, fix(checkout):
Dépendancebuild(deps):, chore(npm):
Omettre si largePas de portée pour les changements transversaux
Changements majeurs
Marquer les changements majeurs
feat!: remove deprecated login endpoint feat(api)!: change response format to JSON:API fix!: drop Node 14 support
Changement majeur en pied de page
feat(api): change user endpoint response BREAKING CHANGE: response now returns array instead of object. Update client parsing.
Règles
! après type/portéeRaccourci pour marquer un changement majeur
BREAKING CHANGE:Token de pied de page (toujours en majuscules)
BREAKING-CHANGE:Aussi valide (forme avec tiret)
Impact SemVerDéclenche une montée MAJOR
Tout typeLes changements majeurs s'appliquent à tout type
Exemples
Commits simples
feat: add email notifications fix: prevent race condition in checkout docs: correct typo in contributing guide style: format with prettier refactor: simplify error handling logic
Avec portée
feat(blog): add comment threading fix(auth): refresh token before expiry test(api): add missing edge case coverage ci(github): add Node 20 to test matrix
Avec corps et pied de page
fix(parser): handle nested quotes correctly Previously, nested quotes caused the parser to enter an infinite loop. This adds a depth counter to prevent unbounded recursion. Closes #234
Pied de page
Tokens de pied de page
BREAKING CHANGE:Décrit un changement d'API majeur
Closes #123Fermer automatiquement l'issue à la fusion
Fixes #456Fermer automatiquement l'issue (référence fix)
Refs #789Référencer l'issue sans la fermer
Reviewed-by: nomAttribution du relecteur
Co-authored-by: nomAttribution du co-auteur
Pieds de page multiples
feat(api)!: redesign authentication flow Migrate from session-based to JWT auth. BREAKING CHANGE: /auth endpoints changed Closes #101 Refs #98, #99
Outillage
Validation de commits
npm install -D @commitlint/cli \ @commitlint/config-conventional echo "module.exports = { extends: \ ['@commitlint/config-conventional'] }" \ > commitlint.config.js
Outils populaires
commitlintValider les messages de commit contre la convention
huskyHooks git (exécuter commitlint au commit)
commitizen (cz)Constructeur interactif de messages de commit
standard-versionChangelog auto + montée de version
semantic-releasePipeline de release entièrement automatisé
release-pleaseOutil d'automatisation de release de Google
Configuration Commitizen
npm install -D commitizen \ cz-conventional-changelog npx commitizen init cz-conventional-changelog # Utiliser : npx cz (ou git cz avec alias)
Patterns courants
Correspondance montée de version
fix:PATCH (1.0.0 → 1.0.1)
feat:MINOR (1.0.0 → 1.1.0)
BREAKING CHANGEMAJOR (1.0.0 → 2.0.0)
docs:, style:, etc.Pas de montée de version
Groupement dans le changelog
## [1.2.0] - 2026-03-27 ### Features - add email notifications (abc1234) ### Bug Fixes - prevent race condition (#123) (def5678)
Format de revert
revert: feat(blog): add comment threading This reverts commit abc1234def5678.