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 en SHA-1, le format par défaut aujourd'hui, 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.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- 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(etcheckout) - Comprendre le rôle de
HEADdans la navigation entre branches
Qu'est-ce qu'une branche ?
Section intitulée « Qu'est-ce qu'une branche ? »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 ↑ HEADDans ce schéma, main pointe vers le commit C3, et HEAD pointe
vers main. Vous êtes donc « sur la branche main ».
Créer une branche
Section intitulée « Créer une branche »-
Créez une branche avec
git branch:Fenêtre de terminal git branch feature/loginCela crée un nouveau pointeur
feature/loginsur le commit actuel. Vous n'avez pas basculé dessus, HEAD pointe toujours surmain:main ← HEAD↓C1 ← C2 ← C3↑feature/login -
Basculez sur la nouvelle branche :
Fenêtre de terminal git switch feature/loginHEAD pointe maintenant vers
feature/login:main↓C1 ← C2 ← C3↑feature/login ← HEAD -
Vérifiez quelle branche est active :
Fenêtre de terminal git branchLa branche courante est marquée d'un astérisque
*:main* feature/login
Raccourci : créer et basculer en une commande
Section intitulée « Raccourci : créer et basculer en une commande »git switch -c feature/loginAvec git checkout (syntaxe historique) :
git checkout -b feature/loginTravailler sur une branche
Section intitulée « Travailler sur une branche »Quand vous faites un commit sur feature/login, seul ce pointeur
avance. main reste en place :
main ↓C1 ← C2 ← C3 ← C4 ↑ feature/login ← HEADSi 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.
Lister les branches
Section intitulée « Lister les branches »| Commande | Description |
|---|---|
git branch | Branches locales |
git branch -a | Branches locales + distantes |
git branch -v | Branches avec dernier commit |
git branch --merged | Branches déjà fusionnées dans HEAD |
git branch --no-merged | Branches non encore fusionnées |
Basculer entre les branches
Section intitulée « Basculer entre les branches »# Revenir sur maingit switch main
# Revenir à la branche précédente (comme cd -)git switch -Supprimer une branche
Section intitulée « Supprimer une branche »Une fois la branche fusionnée, supprimez-la pour garder un dépôt propre :
# Supprimer une branche fusionnéegit branch -d feature/loginSi la branche n'a pas été fusionnée, Git refuse la suppression pour éviter une perte de données. Pour forcer :
git branch -D feature/loginRenommer une branche
Section intitulée « Renommer une branche »# Renommer la branche courantegit branch -m nouveau-nom
# Renommer une branche spécifiquegit branch -m ancien-nom nouveau-nomHEAD : le pointeur spécial
Section intitulée « HEAD : le pointeur spécial »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 :
git log --oneline -1# oucat .git/HEADLa première commande montre le commit, la seconde la référence
symbolique (ex. ref: refs/heads/main).
Dépannage : problèmes courants
Section intitulée « Dépannage : problèmes courants »| Symptôme | Cause probable | Solution |
|---|---|---|
error: Your local changes would be overwritten | Modifications non commitées | git stash ou git commit avant de switcher |
error: branch 'x' is not fully merged | Suppression d'une branche non fusionnée | Vérifiez avec git log main..x, puis -D si voulu |
fatal: A branch named 'x' already exists | Branche déjà créée | git switch x pour basculer dessus |
HEAD detached at abc1234 | Checkout sur un commit/tag | git switch -c ma-branche pour créer une branche |
À retenir
Section intitulée « À retenir »- Une branche = un pointeur vers un commit, 41 octets sur le disque avec le format de hash par défaut (quasi gratuit en ressources)
- HEAD indique votre position actuelle dans le graphe de commits
git switch -c nomcrée et bascule sur une branche en une commandegit branch -dsupprime une branche fusionnée,-Dforce la suppression- Créez des branches souvent : une branche par fonctionnalité, correction ou expérimentation
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Git rebase : réécrire proprement l'historique : L'autre façon d'intégrer une branche, celle qui donne un historique linéaire.
- Gestion des branches Git : Les conventions de nommage et le nettoyage, indispensables dès que les branches se multiplient.
- Branches distantes et tracking : La publication d'une branche locale et le suivi de celle d'un collègue.