Aller au contenu principal

Conventions Git

Ce fichier décrit les conventions Git utilisées dans le projet.

Format des Branches

TypeFormatExemple
Featurefeat/description-courtefeat/filtre-secteur-career
Bugfixfix/description-courtefix/jwt-expiration-401
Hotfix prodhotfix/descriptionhotfix/login-broken
Releaserelease/versionrelease/1.2.0

Format des Commits

Format : type(scope): description courte

Types de commits

TypeUsage
featNouvelle fonctionnalité
fixCorrection de bug
docsDocumentation uniquement
refactorRefactoring sans changement fonctionnel
testAjout ou modification de tests
choreMaintenance, dépendances

Exemples

feat(auth): ajout du refresh token automatique
fix(career): correction du filtre niveau M2
docs(backend): mise à jour setup.md avec variable REDIS_URL

Workflow de Travail

1. Récupérer les dernières modifications

git checkout main
git pull origin main

2. Créer une branche

git checkout -b feat/description-courte

3. Travailler et commiter

git add .
git commit -m "feat(auth): description"

4. Pousser et ouvrir une PR

git push origin feat/description-courte

5. Après review, merger et supprimer la branche

Règles Absolues

  • Jamais de commit direct sur main
  • Jamais de git push --force sur main ou staging
  • Toujours passer par une PR
  • Squasher les commits de fixup avant de merger

État Actuel

Protection de branche à activer

Il n'y a pas de règles de protection de branche GitHub actives.

Voir la section "Lacunes" ci-dessous pour la procédure d'activation.

Lacunes

ÉlémentStatut
Pre-commit hooks❌ Non configuré
CI bloquant les merges✅ Configuré
Rules de protection main❌ À configurer

Comment activer la protection de branche

Dans chaque repo GitHub :

  1. SettingsBranchesAdd branch protection rule
  2. Branch name pattern : main
  3. Cocher : Require a pull request before merging
  4. Sauvegarder

Ça prend 2 minutes par repo et évite les pushes accidentels sur main.

Bonnes Pratiques

Avant de pusher

  • Tester localement son code
  • Vérifier que npm test passe (frontend)
  • Vérifier que npm run lint passe (frontend)
  • Vérifier que npm run build réussit (frontend)
  • Vérifier que pytest -v passe (backend)
  • Vérifier que black --check . passe (backend)

Messages de commit

  • Préfixer avec le type (feat, fix, docs...)
  • Être concis mais descriptif
  • Pas de commits trop gros — préférer plusieurs petits commits

Commandes Utiles

Rebaser sur main

git fetch origin
git rebase origin/main

Squasher des commits

git rebase -i HEAD~3
# Changer "pick" en "squash" pour les commits à fusionner

Annuler le dernier commit (non push)

git reset --soft HEAD~1