Travailler avec des branches
Une branche permet de développer une fonctionnalité, corriger un défaut ou expérimenter sans modifier directement main.
git switch main
git pull
git switch -c ajoute-recherche
Travaillez ensuite normalement :
git add .
git commit -m "Ajoute la recherche par titre"
git push -u origin ajoute-recherche
git branch liste les branches locales. Pour supprimer une branche déjà fusionnée :
git branch -d ajoute-recherche
Une stratégie simple
Pour un petit projet :
-
maincontient une version stable. - Chaque tâche est développée dans une branche courte.
- Les commits sont poussés vers la forge.
- Une Pull Request est ouverte vers
main. - La revue et les tests sont terminés avant la fusion.
Évitez les branches très longues : elles accumulent des divergences et rendent l’intégration difficile.
Fusionner une branche
Depuis main, récupérez les changements puis fusionnez :
git switch main
git pull
git merge ajoute-recherche
git push
La forge peut aussi effectuer la fusion après validation d’une Pull Request.
Comprendre un conflit
Un conflit apparaît lorsque Git ne peut pas choisir automatiquement entre deux modifications incompatibles :
[début de la version présente sur main]
version présente sur main
[séparateur entre les deux versions]
version présente dans la branche
[fin de la version présente dans la branche]
Pour résoudre le conflit, conservez la version correcte, supprimez les marqueurs, puis :
git status
git add fichier-concerne
git commit -m "Résout le conflit dans le fichier"
Pour abandonner une fusion en cours :
git merge --abort
Merge ou rebase ?
git merge conserve les deux lignes d’historique et crée parfois un commit de fusion. git rebase rejoue vos commits au-dessus d’une nouvelle base et produit un historique linéaire.
Pour débuter, utilisez merge sur les branches partagées. Un rebase peut être utile sur une branche personnelle :
git switch ajoute-recherche
git fetch origin
git rebase origin/main
Après un rebase, l’historique local a changé. Si un push est nécessaire sur votre branche personnelle, préférez :
git push --force-with-lease
Exercice
- Créez une branche
ajoute-documentation. - Faites deux commits cohérents sur cette branche.
- Modifiez la même ligne dans
mainet dans la branche. - Fusionnez les branches et résolvez le conflit.
- Vérifiez l’historique avec
git log --oneline --graph --all.