W3docs

Introduction

Apprenez comment fonctionnent les branches Git : créer, fusionner, résoudre les conflits et choisir une stratégie de fusion. Avec des exemples.

Diagramme de vue d'ensemble des conflits de fusion Git

Une branche est un pointeur léger et mobile vers un commit. Elle vous permet de travailler sur une nouvelle fonctionnalité, une correction de bug ou une expérimentation de manière isolée — sans toucher au code dont dépendent les autres. Quand le travail est prêt, vous fusionnez la branche pour que ses modifications rejoignent la ligne principale de développement.

Cette page est la vue d'ensemble de la partie consacrée aux branches dans ce livre. Elle présente les commandes que vous utiliserez pour créer, naviguer entre, combiner et supprimer des branches, ainsi que la façon de gérer les conflits qui peuvent survenir lorsque deux lignes de travail modifient le même code. Chaque section renvoie à un chapitre dédié avec tous les détails. À la fin de cette partie, vous devriez être à l'aise avec le flux de travail quotidien illustré dans l'exemple ci-dessous.

git branch

La commande git branch crée, liste et supprime des branches. Elle ne permet pas de basculer entre les branches ni de fusionner un historique divergent — ce sont les rôles de git checkout et de git merge. Créer une branche ajoute simplement un nouveau pointeur vers le commit sur lequel vous vous trouvez ; cela ne copie pas les fichiers ni ne modifie l'historique, c'est pourquoi la création de branches dans Git est rapide et peu coûteuse.

git branch              # list local branches (the current one is marked with *)
git branch new-feature  # create a branch called new-feature
git branch -d old-work  # delete a branch that has already been merged

Une branche Git est à considérer comme un pointeur vers un instantané de vos modifications, et non comme une copie séparée du projet.

git checkout

La commande git checkout bascule entre les branches ou restaure les fichiers de l'arborescence de travail. Lors d'un changement de branche, Git met à jour les fichiers de votre répertoire de travail pour qu'ils correspondent à la version stockée dans la branche cible et déplace le pointeur HEAD — la référence qui indique « où vous êtes maintenant » — vers cette branche.

git checkout new-feature      # switch to an existing branch
git checkout -b new-feature   # create new-feature AND switch to it in one step

Dans les versions récentes de Git, vous pouvez également utiliser git switch pour la partie changement de branche ; checkout reste la commande la plus documentée. Le raccourci -b est celui que vous utiliserez le plus souvent pour démarrer un travail.

git merge

La commande git merge intègre des lignes de développement indépendantes dans une seule branche. Vous commencez par extraire la branche qui doit recevoir les modifications, puis vous fusionnez l'autre branche dedans. Git résout la fusion de deux manières :

  • Fast-forward — si la branche réceptrice n'a aucun commit propre depuis la divergence de l'autre branche, Git déplace simplement son pointeur en avant. Aucun nouveau commit n'est créé.
  • Fusion à trois voies — si les deux branches ont de nouveaux commits, Git les combine et enregistre un commit de fusion dédié avec deux parents.
git checkout main        # the branch that will receive the work
git merge new-feature    # bring new-feature's commits into main
git branch -d new-feature  # delete the merged branch (now redundant)

merge conflicts

Un conflit de fusion survient lorsque Git ne peut pas combiner automatiquement deux branches — généralement quand les deux branches modifient les mêmes lignes du même fichier, ou quand une branche supprime un fichier que l'autre a modifié. Git interrompt la fusion et marque les zones conflictuelles dans les fichiers concernés avec des marqueurs de conflit comme ceci :

<<<<<<< HEAD
the change on the current branch
=======
the change coming from the other branch
>>>>>>> new-feature

Vous résolvez un conflit en modifiant le fichier pour obtenir l'état final souhaité, en supprimant les marqueurs, puis en indexant et en validant le résultat. Travailler dans des branches isolées maintient les conflits peu nombreux et rares, mais ils font partie intégrante de la collaboration — ce n'est pas le signe que quelque chose s'est mal passé.

git merge strategies

Lorsqu'un travail est prêt à être fusionné dans la ligne principale, Git applique une stratégie de fusion — l'algorithme qu'il utilise pour combiner les branches. Si vous n'en spécifiez pas explicitement, Git choisit une valeur par défaut appropriée (ort dans les versions actuelles, anciennement recursive) en fonction des branches impliquées. Vous n'avez généralement pas besoin de définir une stratégie manuellement ; il est utile de savoir qu'elles existent pour les cas où une stratégie spécifique peut aider.

Un flux de travail de branches typique

En combinant les commandes, une fonctionnalité suit généralement ce déroulement :

git checkout -b add-login   # 1. branch off main and switch to it
# ... edit files, then ...
git add .
git commit -m "Add login form"
git checkout main           # 2. switch back to the receiving branch
git merge add-login         # 3. integrate the feature
git branch -d add-login     # 4. clean up the merged branch

Pour aller plus loin, continuez avec git branch pour l'ensemble complet des opérations sur les branches, ou passez directement au flux de travail par fonctionnalité pour voir ce schéma appliqué à une vraie équipe.

Practice

Pratique
Quelles sont les fonctionnalités des différentes commandes Git relatives aux branches ?
Quelles sont les fonctionnalités des différentes commandes Git relatives aux branches ?
Was this page helpful?