5.3 KiB
5.3 KiB
model, allowed-tools, argument-hint, description
| model | allowed-tools | argument-hint | description |
|---|---|---|---|
| claude-sonnet-4-5-20250929 | Bash | <source-branch> [issue-number-or-text] | Création de branche Git avec workflow structuré |
Création de branche Git
Purpose
Créer une nouvelle branche Git de manière structurée avec support des issues GitHub.
Variables
SOURCE_BRANCH: $1 ISSUE_OR_TEXT: $2
Instructions
- Utilise les outils Bash pour les opérations Git
- Valide que la branche source existe
- Génère un nom de branche basé sur l'issue si fournie
- Applique les conventions de nommage du projet
Relevant Files
- @.git/config
- @.gitignore
- @docs/README.md
Workflow
🚨 ÉTAPE CRITIQUE : CHECKOUT VERS SOURCE D'ABORD 🚨
-
Vérifier SOURCE_BRANCH obligatoire
- Si
SOURCE_BRANCHn'est pas fourni → ARRÊTER et demander à l'utilisateur
- Si
-
Valider SOURCE_BRANCH existe localement
git branch --list "$SOURCE_BRANCH"- Si n'existe pas → ARRÊTER avec erreur
-
🔴 CHECKOUT VERS SOURCE_BRANCH AVANT TOUT 🔴
git checkout $SOURCE_BRANCH- Vérifier qu'on est bien dessus :
git branch --show-current - CRITIQUE : Cette étape garantit qu'on crée depuis un point propre
-
🔴 PULL POUR METTRE À JOUR SOURCE_BRANCH 🔴
git pull origin $SOURCE_BRANCH- Garantit qu'on part du dernier commit de origin
- CRITIQUE : Évite de créer depuis un point obsolète
-
Générer nom de la nouvelle branche
- Si
ISSUE_OR_TEXTest fourni :- Détecte si c'est un numéro (entier) ou du texte
- Si c'est un numéro :
- Récupère les informations de l'issue via GitHub CLI (
gh issue view ${ISSUE_OR_TEXT}) - Génère un nom de branche :
issue/${ISSUE_OR_TEXT}-{titre-simplifie} - Le titre est nettoyé (espaces -> tirets, caractères spéciaux supprimés, minuscules)
- Récupère les informations de l'issue via GitHub CLI (
- Si c'est du texte :
- Génère un nom de branche :
feature/${ISSUE_OR_TEXT-simplifie} - Le texte est nettoyé (espaces -> tirets, caractères spéciaux supprimés, minuscules)
- Génère un nom de branche :
- Si pas de
ISSUE_OR_TEXT, demande le nom de branche à l'utilisateur
- Si
-
Vérifier que la nouvelle branche n'existe pas déjà
git branch --list "$NEW_BRANCH"- Si existe déjà → ARRÊTER avec erreur
-
Créer et checkout la nouvelle branche
git checkout -b $NEW_BRANCH- La branche est créée depuis SOURCE_BRANCH (car on est dessus)
-
NE PAS configurer de tracking automatiquement
- ❌ INTERDIT :
git branch --set-upstream-to=origin/$SOURCE_BRANCH $NEW_BRANCH - ✅ Le tracking sera configuré automatiquement lors du premier push avec
-u - ✅ Lors du push :
git push -u origin $NEW_BRANCH - RAISON : Configurer le tracking vers SOURCE_BRANCH pousse les commits sur la branche parente au lieu de créer une nouvelle branche distante
- ❌ INTERDIT :
Expertise
Conventions de nommage des branches :
feature/nom-descriptif: Nouvelles fonctionnalitésfix/nom-bug: Corrections de bugsissue/123-nom-descriptif: Basé sur une issue GitHub- Utilise des tirets, pas d'espaces ni caractères spéciaux
Template
# Exemple d'usage avec numéro d'issue :
/git:branch main 42
# Résultat attendu :
# - Récupère l'issue #42
# - Titre: "Add user authentication system"
# - Crée la branche: issue/42-add-user-authentication-system
# - Checkout vers cette branche
# Exemple d'usage avec texte :
/git:branch main "Add login form"
# Résultat attendu :
# - Crée la branche: feature/add-login-form
# - Checkout vers cette branche
Examples
# Créer une branche depuis main avec issue GitHub
/git:branch main 123
# Créer une branche depuis main avec texte descriptif
/git:branch main "user authentication"
# Créer une branche depuis develop sans argument supplémentaire
/git:branch develop
# Créer une branche depuis une branche existante avec issue
/git:branch feature/api-base 456
# Créer une branche fix depuis main avec texte
/git:branch main "fix login bug"
Report
- Nom de la branche créée
- Branche source utilisée
- Issue associée (si applicable)
- Statut du checkout
- Note : Le tracking remote sera configuré lors du premier push avec
git push -u origin $NEW_BRANCH
Validation
- ✅
SOURCE_BRANCHdoit exister localement - ✅
SOURCE_BRANCHest obligatoire - ✅ CHECKOUT vers SOURCE_BRANCH AVANT création (CRITIQUE)
- ✅ PULL pour mettre à jour SOURCE_BRANCH (CRITIQUE)
- ✅ La nouvelle branche ne doit pas déjà exister
- ✅ Si
ISSUE_OR_TEXTest un numéro, l'issue doit exister sur GitHub - ✅ Le nom généré respecte les conventions de nommage
- ✅ Détection automatique entre numéro d'issue et texte descriptif
Pourquoi checkout + pull vers SOURCE_BRANCH d'abord ?
Problème 1 évité :
- Si on est sur
feature/Aet on créefeature/Bdepuismain - Sans checkout vers
maind'abord, la branche est créée depuisfeature/A - Les commits de
feature/Ase retrouvent surfeature/B - Résultat : impossible de créer une PR propre
Problème 2 évité :
- Si
mainlocale est en retard surorigin/main - Sans pull, on crée depuis un point obsolète
- Résultat : commits manquants, conflits, PR avec historique incorrect
Solution :
- TOUJOURS faire
git checkout $SOURCE_BRANCH - TOUJOURS faire
git pull origin $SOURCE_BRANCH - PUIS créer avec
git checkout -b $NEW_BRANCH