Aller au contenu
Développement medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Les branches Git en bref

8 min de lecture

Une branche Git est un simple pointeur mobile vers un commit. Créer une branche ne copie rien : Git crée juste un fichier de 41 octets contenant le hash du commit. C’est cette légèreté qui rend le branchement Git quasi instantané et encourage à créer des branches pour chaque fonctionnalité, correction ou expérimentation. Ce guide vous apprend à créer, basculer, fusionner et supprimer tes branches, avec les commandes essentielles et les pièges classiques à éviter.

Prérequis : Enregistrer des modifications et Consulter l’historique.

  • Comprendre qu’une branche est un pointeur léger vers un commit
  • Créer, lister, renommer et supprimer des branches locales
  • Basculer entre branches avec git switch (et checkout)
  • Comprendre le rôle de HEAD dans la navigation entre branches

Imaginez une ligne de Post-it sur un mur. Chaque Post-it est un commit. La branche main est simplement une étiquette collée sur le dernier Post-it de la série. Quand vous faites un nouveau commit, l’étiquette se déplace sur le nouveau Post-it.

En termes techniques :

  • Un commit contient un snapshot du projet, un message, et un pointeur vers son (ou ses) parent(s).
  • Une branche est un pointeur mobile vers un commit.
  • HEAD est un pointeur spécial qui indique sur quelle branche vous travaillez actuellement.
main
C1 ← C2 ← C3
HEAD

Dans ce schéma, main pointe vers le commit C3, et HEAD pointe vers main. Vous êtes donc « sur la branche main ».

  1. Créez une branche avec git branch :

    Fenêtre de terminal
    git branch feature/login

    Cela crée un nouveau pointeur feature/login sur le commit actuel. Vous n’avez pas basculé dessus — HEAD pointe toujours sur main :

    main ← HEAD
    C1 ← C2 ← C3
    feature/login
  2. Basculez sur la nouvelle branche :

    Fenêtre de terminal
    git switch feature/login

    HEAD pointe maintenant vers feature/login :

    main
    C1 ← C2 ← C3
    feature/login ← HEAD
  3. Vérifiez quelle branche est active :

    Fenêtre de terminal
    git branch

    La branche courante est marquée d’un astérisque * :

    main
    * feature/login
Fenêtre de terminal
git switch -c feature/login

Avec git checkout (syntaxe historique) :

Fenêtre de terminal
git checkout -b feature/login

Quand vous faites un commit sur feature/login, seul ce pointeur avance. main reste en place :

main
C1 ← C2 ← C3 ← C4
feature/login ← HEAD

Si un collègue pousse un commit sur main pendant ce temps :

C4 ← C5 (main)
/
C1 ← C2 ← C3
\
C6 ← C7 (feature/login ← HEAD)

Les deux lignes de développement évoluent indépendamment. C’est tout l’intérêt des branches : isoler le travail.

CommandeDescription
git branchBranches locales
git branch -aBranches locales + distantes
git branch -vBranches avec dernier commit
git branch --mergedBranches déjà fusionnées dans HEAD
git branch --no-mergedBranches non encore fusionnées
Fenêtre de terminal
# Revenir sur main
git switch main
# Revenir à la branche précédente (comme cd -)
git switch -

Une fois la branche fusionnée, supprimez-la pour garder un dépôt propre :

Fenêtre de terminal
# Supprimer une branche fusionnée
git branch -d feature/login

Si la branche n’a pas été fusionnée, Git refuse la suppression pour éviter une perte de données. Pour forcer :

Fenêtre de terminal
git branch -D feature/login
Fenêtre de terminal
# Renommer la branche courante
git branch -m nouveau-nom
# Renommer une branche spécifique
git branch -m ancien-nom nouveau-nom

HEAD est la réponse à la question « où suis-je ? » dans Git :

  • Normalement, HEAD pointe vers une branche (ex. main), qui elle-même pointe vers un commit.
  • Si vous faites git checkout <hash-commit> directement, HEAD pointe vers un commit sans passer par une branche : c’est le mode HEAD détaché (detached HEAD).

Pour vérifier où pointe HEAD :

Fenêtre de terminal
git log --oneline -1
# ou
cat .git/HEAD

La première commande montre le commit, la seconde la référence symbolique (ex. ref: refs/heads/main).

SymptômeCause probableSolution
error: Your local changes would be overwrittenModifications non commitéesgit stash ou git commit avant de switcher
error: branch 'x' is not fully mergedSuppression d’une branche non fusionnéeVérifiez avec git log main..x, puis -D si voulu
fatal: A branch named 'x' already existsBranche déjà crééegit switch x pour basculer dessus
HEAD detached at abc1234Checkout sur un commit/taggit switch -c ma-branche pour créer une branche
  • Une branche = un pointeur de 41 octets vers un commit (quasi gratuit en ressources)
  • HEAD indique votre position actuelle dans le graphe de commits
  • git switch -c nom crée et bascule sur une branche en une commande
  • git branch -d supprime une branche fusionnée, -D force la suppression
  • Créez des branches souvent : une branche par fonctionnalité, correction ou expérimentation

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn