TP – Découverte des branches Git (en local)
Objectif
Comprendre et manipuler les branches Git en local pour travailler en parallèle sur différentes évolutions sans perturber la version principale.
Table des matières
Ici, nous avons un TP très guidé, l'idée étant de vous faire manipuler les branches Git pour bien comprendre leur fonctionnement. Comme toujours, n'hésitez pas à consulter l'aide mémoire Git disponible ici :
Création du dépôt de travail
Créez un nouveau répertoire et initialisez un dépôt Git :
mkdir tp-branches
cd tp-branches
git init
echo "# Mon projet de test" > README.md
echo "Version de base" > contenu.txt
echo "Ligne 1 - texte initial" >> contenu.txt
git add .
git commit -m "État initial du projet"Vérifiez votre état actuel :
git status
git log --onelineEcho dans un terminal ?
Ici nous utilisons la commande echo pour créer rapidement des fichiers texte depuis le terminal. Vous pouvez aussi créer les fichiers avec un éditeur de texte (VSCode, nano, vim, etc.) si vous préférez.
Création d’une première branche de fonctionnalité
Vous allez maintenant travailler sur une nouvelle fonctionnalité sans toucher la branche principale.
Créez et basculez sur une nouvelle branche :
git switch -c feature/accueilSyntaxe alternative (ancienne)
Alternative, vous pouvez utiliser la commande plus ancienne :
git checkout -b feature/accueilVérifiez que vous êtes bien sur la nouvelle branche :
git branch(ou via le prompt du terminal qui affiche votre branche courante)
Modifiez le fichier contenu.txt :
Ajoutez les éléments suivants dans votre fichier contenu.txt :
Ligne 2 - menu d'accueil
Ligne 3 - image principalegit add contenu.txt
git commit -m "Ajout du menu d'accueil"Faites une deuxième modification sur cette même branche :
echo "Ligne 4 - footer avec copyright" >> contenu.txt
git add contenu.txt
git commit -m "Ajout du footer"Retour à la branche principale et constatation
Revenez sur la branche principale :
git switch mainObservez le contenu du fichier :
cat contenu.txtQue remarquez-vous ? Les modifications faites sur la branche feature/accueil ne sont pas présentes ici.
Visualisation de l’historique
Affichez l’historique sous forme graphique :
git log --oneline --graph --allVous devriez voir clairement la divergence entre les deux branches.
Intégration des modifications (fusion simple)
Une fois la fonctionnalité validée, intégrez-la dans la branche principale :
git switch main
git merge feature/accueilRegardez à nouveau le contenu :
cat contenu.txtVérifiez l’historique :
git log --oneline --graph --allVous observez un « fast-forward » : la branche principale a simplement avancé jusqu’au dernier commit de la branche feature.
Nettoyage
Maintenant que la fonctionnalité est intégrée, supprimez la branche devenue inutile :
git branch -d feature/accueilVérifiez que la branche a bien disparu :
git branchAttention !
Ne supprimez une branche que si vous êtes sûr que son contenu a été intégré ou n’est plus nécessaire. Une branche supprimée ne peut pas être récupérée facilement.
Simulation d’un conflit (situation classique)
Vous allez maintenant provoquer intentionnellement un conflit pour apprendre à le résoudre.
Créez une branche dédiée à une correction :
git switch -c hotfix/correction-titreModifiez manuellement la première ligne du fichier contenu.txt :
remplacez « Version de base » par « Version stable 1.0 ».
Vous pouvez utiliser l’éditeur de votre choix, par exemple :
nano contenu.txt
# ou vim contenu.txt, ou code contenu.txt, etc.Enregistrez et quittez, puis commitez :
git add contenu.txt
git commit -m "Correction du titre vers Version stable 1.0"Revenez sur la branche main et effectuez une modification différente sur la même ligne :
git switch mainModifiez manuellement la première ligne du fichier contenu.txt :
remplacez « Version de base » par « Version 1.0 - production ».
Enregistrez, puis :
git add contenu.txt
git commit -m "Mise à jour du titre pour la production"Maintenant, tentez de fusionner la branche hotfix dans main :
git merge hotfix/correction-titreGit signale un conflit et arrête la fusion.
Ouvrez contenu.txt avec votre éditeur : vous verrez les marqueurs de conflit :
<<<<<<< HEAD
Version 1.0 - production
=======
Version stable 1.0
>>>>>>> hotfix/correction-titreRésolvez le conflit en choisissant la version qui vous convient (ou en combinant les deux), puis supprimez complètement les marqueurs <<<<<<<, ======= et >>>>>>>.
Enregistrez le fichier, puis finalisez la fusion :
git add contenu.txt
git commit -m "Résolution du conflit sur le titre de version"Vérifiez l’historique pour voir le commit de merge :
git log --oneline --graph --allCas pratique
Créer un nouveau fichier dans votre dépôt git :
- Index.html contenant une structure HTML de base.
- styles.css contenant quelques règles CSS simples.
Tester le site et versionner les fichiers dans la branche principale (main).
Créer une branche feature/homepage pour développer une page d’accueil avec du contenu spécifique (texte, images, liens).
Une fois la page d’accueil terminée, fusionner la branche feature/homepage dans main.
C'est à vous de jouer !
Bilan du TP – commandes essentielles
# Créer et basculer en une commande
git switch -c nom-de-branche
# Ou via l’ancienne syntaxe
git checkout -b nom-de-branche
# Changer de branche
git switch nom-de-branche
# Ou via l’ancienne syntaxe
git checkout nom-de-branche
# Fusionner une branche dans celle actuelle
git merge nom-de-branche
# Voir où on en est
git branch
git status
# Visualiser l’historique (très utile !)
git log --oneline --graph --all
# Supprimer une branche (après merge)
git branch -d nom-de-branchePour aller plus loin
Installez l’extension Git Graph dans VSCode : elle rend la visualisation de l’historique beaucoup plus claire.
Bon travail !
Les branches sont l’une des fonctionnalités les plus puissantes de Git. Prenez l’habitude de créer une branche pour chaque évolution, même quand vous travaillez seul.