Polar Code 🎭

Command Palette

Search for a command to run...

04
Pièce N°04

MODULE 4 – BRANCHES ET WORKFLOWS

Code Opération : OMBRE-ET-VERSIONS-4

OBJECTIFS :

  • Travailler sur plusieurs fronts.
  • Diviser pour mieux régner, fusionner pour achever.
  • Gérer les collisions sans paniquer.

1. QU’EST-CE QU’UNE BRANCHE ?
Une branche, c’est une ligne du temps alternative.
Une réalité parallèle où vous pouvez expérimenter, casser, réparer, sans affecter la version principale.
Par défaut, vous êtes sur main (ou master). C’est la ligne officielle. Celle qui doit rester propre.
Les branches sont vos terrains d’essai. Vos identités de couverture.


2. git branch – GÉRER LES IDENTITÉS
Lister toutes les branches :

git branch

L’astérisque indique où vous êtes.
Créer une nouvelle branche :

git branch nom-de-la-branche

Supprimer une branche (si fusionnée) :

git branch -d nom-de-la-branche

Forcer la suppression (même non fusionnée) :

git branch -D nom-de-la-branche

C’est radical. Comme un effacement de preuves.


3. git checkout -b – CRÉER ET PASSER SUR UNE NOUVELLE BRANCHE
La combine rapide :

git checkout -b nouvelle-branche

Création + saut immédiat.
Vous venez de bifurquer. Votre historique à partir de maintenant va diverger.
Personne sur main ne verra ce que vous faites ici. Pas encore.


4. git merge – FAIRE CONVERGER LES PARALLLÈLES
Quand le travail sur la branche est terminé, il faut la ramener dans la réalité principale.
Placez-vous sur la branche cible (généralement main) :

git checkout main

Puis fusionnez :

git merge nom-de-la-branche

Si tout se passe bien, c’est un fast-forward : l’historique avance tout droit.
Si main a bougé pendant ce temps, Git tente un merge commit : une fusion à trois branches (les deux parents et le résultat).
C’est là que les choses peuvent déraper.


5. CONFLITS DE FUSION – LE MOMENT DE VÉRITÉ
Un conflit arrive quand Git ne peut pas décider tout seul.
Quand la même ligne a été modifiée différemment sur les deux branches.
Git marque le territoire :

<<<<<<< HEAD
Votre version sur la branche actuelle.
=======
La version sur la branche que vous fusionnez.
>>>>>>> nom-de-la-branche

C’est à vous de trancher.


6. RÉSOLUTION MANUELLE – NETTOYER LA SCÈNE
Ouvrez le fichier en conflit.
Décidez quelle version garder, ou mélangez-les intelligemment.
Supprimez les marqueurs (<<<<<<<, =======, >>>>>>>).
Enregistrez.
Puis :

git add fichier-conflit.txt
git commit -m "Résolution du conflit entre main et feature-x"

Le conflit est scellé. L’histoire continue.


TRAVAUX PRATIQUES – SCÉNARIO : DUPLICITÉ MAÎTRISÉE
Opération "Double Jeu"

  1. Assurez-vous d’être sur main. Créez un fichier contacts.txt avec :

    Anderson - Téléphone
    

    Commitez.

  2. Créez une branche feature-ajout et basculez dessus :

    git checkout -b feature-ajout
    
  3. Modifiez contacts.txt en ajoutant une ligne :

    Anderson - Téléphone
    Bernhardt - Radio
    

    Commitez.

  4. Revenez sur main :

    git checkout main
    
  5. Sur main, modifiez la même ligne originale dans contacts.txt :

    Anderson - Ligne sécurisée
    

    Commitez.

  6. Tentez la fusion :

    git merge feature-ajout
    

    Conflit. Le fichier contient maintenant les marqueurs.

  7. Résolvez : gardez les deux lignes, avec Anderson de main et Bernhardt de feature-ajout :

    Anderson - Ligne sécurisée
    Bernhardt - Radio
    

    Supprimez les marqueurs.

  8. git add contacts.txt puis git commit.
    La fusion est achevée.

  9. Supprimez la branche de feature (optionnel) :

    git branch -d feature-ajout
    

FIN DU MODULE 4.
Vous savez maintenant créer des réalités parallèles et les réunir, même quand elles se contredisent.
La prochaine fois, on parlera de travail à distance. De dépôts distants. De pousser et tirer des données comme on envoie des messages codés.

Rapport clos.