Aller au contenu
Développement medium

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 tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn