← Git & GitHub : du premier commit au travail en équipe

Les branches : travailler en parallèle

≈ 20 minutes · Jalon M3 · Prérequis : Annuler sans paniquer

Le gain du jour : créer une branche, y travailler tranquillement, puis fusionner ton travail. C’est exactement le geste que tu feras chaque jour en équipe : une branche par tâche, jamais de travail directement sur la branche principale.

Check pratique — 60 secondes

Cette leçon suppose que tu as fait les exercices 1 à 3 au clavier. Vérifie :

cd ~/Workspaces/pythons/git-entrainement
git log --oneline

Tu dois voir au moins 3–4 commits avec des titres à l’impératif. Moins que ça ? Retourne faire les boucles d’entraînement des leçons précédentes d’abord — sinon cette leçon reposera sur du sable.

Une branche, c’est quoi ?

Jusqu’ici, ton album photo est une ligne droite : commit après commit. Une branche permet de faire bifurquer l’histoire : tu pars du dernier commit et tu construis une suite alternative, sans toucher à la ligne principale (Pro Git, « Les branches en bref »).

Techniquement, une branche n’est qu’une étiquette mobile posée sur un commit — c’est pour ça qu’en créer une est instantané et gratuit. Ta branche principale s’appelle main (ou master sur les vieux dépôts). L’étiquette spéciale HEAD indique où tu es en ce moment.

          A───B───C  ◀ main
                   \
                    D───E  ◀ exploration-donnees  ◀ HEAD (tu es ici)

Pourquoi c’est LA fondation du travail en équipe : chacun travaille sur sa branche, la branche main reste toujours propre et fonctionnelle, et on fusionne quand c’est prêt (après revue). Une tâche = une branche.

Les trois gestes

GesteCommandeEffet
Créer une branche et s’y placergit switch -c <nom>Nouvelle étiquette sur le commit courant, HEAD s’y déplace
Changer de branchegit switch <nom>HEAD se déplace, tes fichiers changent pour refléter la branche
Fusionner une branche dans la courantegit merge <nom>Ramène les commits de <nom> dans la branche où tu es
Où suis-je ?

git branch liste les branches (l’astérisque * = ta position), et git status commence toujours par « On branch … ». Ta boussole marche aussi ici.

Entraîne-toi ici — terminal simulé

Avant de passer au vrai terminal, fais l’exercice dans ce simulateur : il accepte les vraies commandes du cours et valide ton résultat automatiquement. Erreur sans conséquence, bouton reset à volonté.

🖥️ Terminal d'entraînement Objectif : le cycle complet branche → merge → nettoyage.
(main) $

À toi de jouer

  1. Pars d’un état propre et vérifie où tu es :

    git status        # « working tree clean », sur main (ou master)
    git branch
  2. Crée ta branche de travail — une tâche, un nom clair :

    git switch -c exploration-donnees
    git branch        # l'astérisque a bougé
  3. Travaille sur la branche : deux commits, comme en vrai :

    echo "import pandas as pd" > exploration.py
    git add exploration.py
    git commit -m "Ajoute le squelette d'exploration"
    
    echo "df = pd.read_csv('donnees.csv')" >> exploration.py
    git add exploration.py
    git commit -m "Charge le fichier de données"
  4. Le moment magique. Retourne sur main et regarde tes fichiers :

    git switch main
    ls                # exploration.py a DISPARU !
    cat analyse.py    # intact, comme avant

    Rien n’est perdu : exploration.py vit sur l’autre branche. Reviens-y pour le constater (git switch exploration-donnees, ls), puis retourne sur main. Les fichiers de ton dossier suivent HEAD.

  5. Visualise la géographie de ton dépôt :

    git log --oneline --all --graph

    Tu vois main et exploration-donnees pointer sur des commits différents.

  6. Le travail est prêt : fusionne. On se place toujours sur la branche qui reçoit :

    git status        # vérifie : « On branch main »
    git merge exploration-donnees
    git log --oneline --all --graph

    Git dit « Fast-forward » : comme main n’avait pas avancé pendant ton travail, il a suffi de faire glisser son étiquette en avant. (Quand les deux branches ont avancé, Git crée un commit de fusion — et parfois un conflit : c’est le programme du jalon M6.)

  7. Nettoie : la branche fusionnée ne sert plus :

    git branch -d exploration-donnees
    git branch
  8. Boucle d’entraînement (2 fois, de mémoire) : nouvelle branche → un commit → retour sur main → merge → suppression de la branche. C’est le cycle que tu referas des centaines de fois en équipe.

Vérifie ta compréhension

1. Fondamentalement, qu'est-ce qu'une branche Git ?

2. Tu veux ramener le travail d'exploration-donnees dans main. Que fais-tu ?

3. Tu reviens sur main et un fichier a « disparu » du dossier. Que s'est-il passé ?

Pour aller plus loin

📖 Source principale : Pro Git (fr) — « Les branches en bref » puis « Branches et fusions : les bases ».

🎮 Pratique interactive fortement recommandée : Learn Git Branching (en français) — fais la séquence « Introduction » (4 niveaux) : tu verras les étiquettes bouger en direct. C’est le meilleur simulateur qui existe pour ancrer cette leçon.

🗂 Fiche mise à jour : Commandes Git — antisèche.