Versioning avec Git & GitHub · Étape 11

Crée, nomme et parcours des branches

Comprends qu’une branche est une référence mobile, crée des branches courtes et vérifie précisément leur divergence.

Durée indicative · ~1 h 20Niveau intermédiairePrérequis conseillé · Leçon 10 — gitignore, fichiers suivis et secretsPratique · TP
L’idée reçue

« Une branche est une copie complète du projet. »

Une branche Git est principalement une référence mobile vers un commit. Les objets déjà présents sont partagés dans la base Git.

01Observe HEAD et les références

chmod +x module3-git-branches-integration.sh
./module3-git-branches-integration.sh setup
cd /tmp/soria-git-branches-$USER/branches

git branch --show-current
git rev-parse HEAD
git show-ref --heads

HEAD indique la branche actuellement checkoutée. La branche pointe vers le commit courant.

02Crée une branche de travail

git switch -c feature/monitoring
mkdir -p docs
printf '# Monitoring notes\n' > docs/monitoring.md
git add docs/monitoring.md
git commit -m "docs: add monitoring notes"

Le préfixe décrit le type de travail. Un nom utile exprime l’intention, pas le nom de la personne.

03Retourne sur main

git switch main
git status --short --branch
ls docs 2>/dev/null || true
git log --oneline --decorate --graph --all

Le commit de monitoring existe toujours, mais il n’est pas accessible depuis main tant qu’aucune intégration n’a eu lieu.

04Crée une seconde branche indépendante

git switch -c docs/runbook
mkdir -p docs
printf '# Operations runbook\n' > docs/runbook.md
git add docs/runbook.md
git commit -m "docs: add operations runbook"
git switch main

05Mesure l’écart

git rev-list --count main..feature/monitoring
git rev-list --count main..docs/runbook
git log --left-right --graph --oneline feature/monitoring...docs/runbook

A..B sélectionne les commits accessibles depuis B mais pas A. A…B met en évidence les deux côtés depuis leur ancêtre commun.

06Inspecte sans checkout

git show feature/monitoring:docs/monitoring.md
git log --oneline main..feature/monitoring
git diff main...feature/monitoring

07Supprime seulement après vérification

git branch --merged main
git branch --no-merged main
git branch -d feature/monitoring

Dans cet état, Git refuse normalement -d car la branche n’est pas fusionnée. -D force la suppression de la référence locale et ne doit pas remplacer une vérification.

Challenge autonome

Construis deux branches courtes

Crée une branche fonctionnalité et une branche documentation depuis le même main. Fournis le graphe, leur ancêtre commun et le diff propre à chacune.

Ce que tu retiens

Une branche est une référence légère. Elle isole une intention, doit rester courte et se mesure par son écart avec la branche d’intégration.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.