Gérer les Branches Git et Résoudre les Conflits : Le Guide Pratique

@joekakone

Joseph Konka @joekakone

03/03/2026 · 8 min

Apprenez à isoler vos expérimentations analytiques grâce aux branches Git : création, basculement moderne avec git switch, fusion git merge, résolution des conflits et gestion des notebooks Jupyter.

Imaginez que vous deviez tester un nouvel algorithme d'imputation des valeurs manquantes ou refondre un script SQL qui alimente le tableau de bord de la direction générale. Si vous effectuez ces modifications directement sur le code en production, le moindre bug bloquera toute l'équipe.

C'est ici qu'intervient l'un des plus puissants concepts de Git : les branches.


🌿 Qu'est-ce qu'une Branche Git ?#

Une branche est un pointeur mobile vers un commit précis. Elle vous permet de créer une ligne temporelle parallèle dans laquelle vous pouvez écrire du code, ajouter des bibliothèques et tester des modèles en toute liberté, sans impacter la branche principale stable (main).

               (Branche d'expérimentation : feature/nouveau-modele)
                         o ─── o ─── o
                        /             \  git merge
─── o ───────── o ─────o ──────────────o ───► Branche main (Production stable)
 (Commit 1)  (Commit 2)

Une fois vos tests validés, vous réintégrez vos travaux dans main grâce à une opération de fusion (merge).


🚀 1. Créer et Basculer sur une Branche#

La commande moderne : git switch#

Depuis la version 2.23 de Git, la commande recommandée pour changer de branche est git switch (qui remplace l'ancienne commande polyvalente git checkout) :

Créer et basculer instantanément sur une nouvelle branche
git switch -c feature/imputation-knn
  • -c (create) : Crée la branche et bascule immédiatement dessus.
Sortie console
Switched to a new branch 'feature/imputation-knn'

🏷️ Conventions de Nommage Recommandées en Data#

Adoptez des préfixes clairs pour identifier la nature de vos travaux : - feature/nom-du-calcul : Pour une nouvelle fonctionnalité ou un nouveau modèle (ex: feature/clustering-rfm). - fix/nom-du-correctif : Pour corriger une anomalie (ex: fix/taux-change-devise). - experiment/nom-du-test : Pour une exploration de Data Science jetable.


📋 2. Lister et Gérer ses Branches#

Pour voir toutes les branches locales existantes et savoir sur laquelle vous travaillez (indiquée par une astérisque * et une couleur verte) :

Lister les branches locales
git branch
Sortie console
* feature/imputation-knn
  main

Pour revenir sur la branche principale :

Revenir sur main
git switch main

🤝 3. Fusionner une Branche (git merge)#

Une fois votre algorithme testé et validé sur votre branche :

  1. Basculez sur la branche de destination (généralement main) :
    git switch main
    
  2. Exécutez la fusion en désignant la branche contenant vos nouveautés :
    git merge feature/imputation-knn
    
Sortie console (Fusion Fast-forward)
Updating 7a3b4c1..9f8e2d4
Fast-forward
 extract.py | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Supprimer la branche devenue inutile#

Une fois les modifications fusionnées dans main, la branche temporaire peut être supprimée proprement :

Supprimer une branche locale fusionnée
git branch -d feature/imputation-knn

⚔️ Démystifier les Conflits de Fusion (Merge Conflicts)#

Un conflit survient lorsque deux branches ont modifié les mêmes lignes d'un même fichier de façon contradictoire. Dans ce cas, Git ne sait pas quelle version choisir et s'interrompt pour vous demander votre arbitrage :

Message d'alerte de conflit Git
Auto-merging extract.py
CONFLICT (content): Merge conflict in extract.py
Automatic merge failed; fix conflicts and then commit the result.

Comment résoudre le conflit ?#

Ouvrez le fichier en conflit dans votre éditeur (VS Code, Cursor). Git a inséré des marqueurs visuels :

extract.py : Marqueurs de conflit Git
<<<<<<< HEAD (Votre branche actuelle main)
# Règle actuelle de gestion des valeurs manquantes
df['revenu'] = df['revenu'].fillna(0)
=======
# Règle proposée dans votre branche feature
df['revenu'] = df['revenu'].fillna(df['revenu'].median())
>>>>>>> feature/imputation-knn
  1. Analysez les deux options et décidez de la règle métier à conserver (par exemple, la médiane).
  2. Supprimez les marqueurs Git (<<<<<<<, =======, >>>>>>>).
  3. Enregistrez le fichier résolu.
  4. Validez la résolution dans Git :
    git add extract.py
    git commit -m "fix: résolution du conflit sur l'imputation de revenu (choix de la médiane)"
    

📓 Attention Spéciale : Les Notebooks Jupyter (.ipynb) et Git#

Tout Data Analyst ou Data Scientist s'est déjà arraché les cheveux en essayant de fusionner deux versions d'un notebook .ipynb.

[!WARNING] Pourquoi les Notebooks provoquent-ils autant de conflits ?
Un fichier .ipynb est en réalité un fichier texte au format JSON contenant non seulement votre code Python, mais aussi les résultats d'exécution, les graphiques en base64, les métadonnées et le compteur d'exécution des cellules ([1], [2]). Si deux personnes exécutent le même notebook, les compteurs changent et Git signale un conflit illisible !

Les bonnes pratiques indispensables : 1. Dans Jupyter, faites systématiquement Kernel > Restart Kernel and Clear All Outputs avant de commiter. 2. Déportez le code métier complexe et les fonctions réutilisables dans des modules .py classiques suivis par Git, et ne gardez dans les notebooks que l'exploration visuelle. 3. Installez au besoin des outils d'assainissement automatique comme nbstripout.


Vous maîtrisez désormais les branches et la gestion des versions locales sur votre machine. Dans la prochaine étape, nous allons propulser vos projets dans le cloud et découvrir la collaboration d'équipe sur GitHub !

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue