Objectifs
- Comprendre repository, commit, branch, merge, pull request, tag et conflict.
- Lire les commandes Git courantes d’un changement local.
- Comparer trunk-based development, feature branches et Git Flow.
- Expliquer le risque des branches trop longues.
Git et stratégies de branches
Git fournit l’historique sur lequel la CI s’appuie. Une branche isole temporairement un changement ; une pull request ou merge request ouvre la revue, déclenche les tests et prépare le merge.
Un tag nomme un commit, souvent pour identifier une version. Un conflict apparaît lorsque Git ne peut pas combiner automatiquement des changements concurrents et exige une résolution humaine relue.
Un changement pédagogique
Ces commandes illustrent le cycle local. Elles sont affichées uniquement : les tests du parcours ne créent aucune branche, aucun commit et aucun push.
git status
git branchgit switch -c feature/logingit add .
git commit -m "feat: add login"git pushgit log --oneline
git tagAvant git add ., vérifiez git status pour ne pas inclure de secret, fichier local ou changement sans rapport. N’exécutez git push que vers un dépôt autorisé.
De la feature vers main
Une branche courte facilite la revue et réduit la distance avec main. Les protections de branche peuvent exiger une review et des tests réussis avant le merge.
- Un commit cohérent facilite la revue et le diagnostic.
- Une review détecte erreurs, secrets exposés et changements trop larges.
- Les tests automatiques complètent la review sans la remplacer.
- Le merge intègre le changement validé dans la branche cible.
feature
↓
review
↓
tests
↓
merge
↓
mainChoisir une stratégie adaptée
Trunk-based development privilégie de très petites intégrations fréquentes vers une branche principale, éventuellement protégées par des feature flags. Les feature branches isolent un changement pendant sa revue. Git Flow ajoute des branches structurées comme develop, release et hotfix.
Aucune stratégie n’est universellement meilleure. Une équipe choisit selon sa taille, son rythme de livraison, ses contraintes réglementaires et sa capacité à tester rapidement.
- Trunk-based : intégrations très fréquentes et branches très courtes.
- Feature branches : isolation claire, mais risque de divergence si elles durent.
- Git Flow : cycles de releases formalisés, avec davantage de branches et de merges.
- Une branche longue accumule les écarts avec main et augmente les conflits et l’intégration tardive.
Erreur fréquente : laisser une branche diverger trop longtemps
Mini résumé
- Repository, commits et branches donnent une histoire vérifiable aux changements.
- Review, tests et protections précèdent le merge vers une branche importante.
- Trunk-based, feature branches et Git Flow répondent à des contextes différents.
- Les branches courtes limitent la divergence et les conflits.
Mini quiz
Trois questions pour vérifier les notions essentielles de la leçon.