# WORKFLOW-GIT — branches, PR, tags (standard “main”)

## 0) Objectif
- Tout le monde (toi compris) suit un protocole unique.
- Zéro ambigüité entre “ce qui tourne” et “ce qui est versionné”.

## 1) Branches : politique

### main (branche de travail)
- Branche par défaut du repo.
- Tout changement passe idéalement par PR (même si tu es seul).

### master (legacy/compat)
- Doit rester alignée sur main (si vous gardez master).
- Protégée contre push accidentel (pas de force-push, pas de push direct).
- N’est **pas** un axe de travail.

### branches de feature
Conventions recommandées :
- `fix/<sujet>` : correctif
- `feat/<sujet>` : nouvelle fonction
- `ops/<sujet>` : infra, déploiement, scripts, docs ops

## 2) PR (même si tu es seul)
- Créer une PR → vérifier CI (Actions) → merge.
- Règle : “Prevent merge if checks fail” activée (bonne pratique).
- Approvals : 0 (si tu es seul).

## 3) Tags
- Tags d’archives : `archive-master-<YYYYmmdd-HHMMSS>` (déjà fait).
- Snapshots prod : `prod-snapshot-<YYYYmmdd-HHMMSS>` si besoin.

## 4) Commandes standard (Mac)

### Se mettre parfaitement à jour
en sh :
git checkout main
git fetch origin --prune --tags
git reset --hard origin/main
git clean -fd   # optionnel : supprime untracked

### Publier un changement
git checkout -b fix/<slug>
# edits...
git add -A
git commit -m "fix: <message>"
git push -u origin HEAD
# PR via UI, merge

## 5) Remote case-sensitive (piège déjà rencontré)

Le repo peut exister avec Owner en casse différente (ex: Archicratia vs archicratia).
Standard : remote doit être :

https://.../Archicratia/archicratie-edition.git

Vérifier :
git remote -v

## 6) NAS : pas de git natif

Sur NAS, on n’installe pas forcément git dans le shell.
Standard : utiliser alpine/git en conteneur (cf. OPS-SYNC-TRIPLE-SOURCE).

## 7) Interdits (pour éviter l’enfer)

Éditer des fichiers du repo via FileStation “pour aller vite” (sauf hotfix d’urgence, puis backport immédiat Git).

Pousser sur master (sauf opération contrôlée d’alignement).

Force-push sur main.