Skip to content

Conventional commits

Le cours demande des messages de commit qui respectent un standard (chiant je sais), pas un "first commit". Le standard, c'est les conventional commits.

Le format

type(scope): description
  • type: ce qu'on a fait (voir après)
  • scope: la partie touchée, entre parenthèses (api, html, js, vite, readme, ci...)
  • description: courte, à l'impératif ou au passé comme on veut, mais toujours le même style, sans point à la fin

Les types

Type Quand
feat nouvelle fonctionnalité
fix correction de bug
docs doc uniquement (README, jsdoc...)
style mise en forme, sans changer la logique (espaces, guillemets...)
refactor changer le code sans ajouter de feature ni corriger de bug
perf amélioration de performance
test ajout ou modif de tests
build build, dépendances (vite, npm...)
ci fichiers de CI (.gitlab-ci.yml)
chore tâche sans grande importance (ex: premier commit, ajout d'un fichier)
revert annule un commit précédent

Changement qui casse la compatibilité

On ajoute un ! juste avant les ::

feat(api)!: changement d'api météo

Exemples

Bons:

chore(project): initial commit
feat(api): ajout de l'api exchange ainsi que des tests unitaires
fix(html): correction du titre de la page
refactor(vite): ajout du dossier public et utilisation de ce dossier pour favicon
feat(ci): nouveau jobs ci
feat(api)!: changement d'api météo

Mauvais:

initial commit
update
fix
.
bs

Lien avec les tags de version

Les tags suivent le versionnage sémantique: vMAJEUR.MINEUR.PATCH.

Commit Tag Exemple
fix PATCH v1.0.0 -> v1.0.1
feat MINEUR v1.0.0 -> v1.1.0
feat! MAJEUR v1.1.0 -> v2.0.0
git tag v1.0.0
git tag v1.1.0
git tag v2.0.0
git push --tags

Tip

Pour check le résultat: git log --oneline --graph --all --decorate affiche les tags à côté des commits.