TawaKnow LogoTawaKnow
AWSDevOpsFavorisContribuer

© 2026 TawaKnow. Tous droits réservés.

Mentions LégalesPolitique de confidentialitéContribuer
Pratiques DevOps
0/29 chapitres0%
1.

Introduction au DevOps

2.

Introduction à Linux

3.

Système de Fichiers Linux

4.

Interface en Ligne de Commande (CLI)

5.

Gestionnaire de Paquets Linux

6.

Vim — Éditeur de Texte CLI

7.

Utilisateurs & Groupes Linux

8.

Permissions & Propriété des Fichiers

9.

Shell Scripting Bash

10.

Variables d'Environnement Linux

11.

Réseau Linux

12.

SSH — Secure Shell

13.

Introduction à Git & Contrôle de Version

14.

Configurer un Dépôt Git

15.

Flux de Travail Git — add, commit, push, pull

16.

Branches Git & Merge Requests

17.

Git Avancé — Commandes, .gitignore & Bonnes Pratiques

18.

Outils de Build & Gestionnaires de Paquets

19.

Build Tools, Docker & CI/CD

20.

Introduction à Nexus — Gestionnaire de Dépôts d'Artifacts

21.

Installer et Configurer Nexus sur un Serveur

22.

Nexus — Repositories, Publication et API REST

23.

Introduction aux Containers & Docker

24.

Commandes Docker & Registries

25.

Dockerfile — Créer des Images Docker

26.

Docker Compose, Volumes & Bonnes Pratiques

27.

Introduction à Jenkins & CI/CD

28.

Installer et Configurer Jenkins

29.

Jenkins Pipeline & Jenkinsfile

...Branches Git & Merge Requests
CoursPratiques DevOpsBranches Git & Merge Requests
Chapitre 16/29

Branches Git & Merge RequestsBranches Git & Merge Requests

5 min de lecture
Total: ~5 min
Progression du cours0/29 chapitres

Branches Git & Merge Requests

Les branches permettent de travailler sur des fonctionnalités ou corrections en isolation, sans perturber le code stable de la branche principale.


Pourquoi des branches ?

Sans branches :
  Tout le monde modifie main → instabilité constante, conflits permanents

Avec branches :
  main (stable, prêt pour la prod)
  ├── feature/login        ← Dev 1 travaille ici
  ├── feature/dashboard    ← Dev 2 travaille ici
  └── bugfix/cart-error    ← Dev 3 travaille ici

→ Chacun isole son travail, main reste stable

Objectif : maintenir une branche main stable, toujours prête pour la production.


La branche principale

NomDescription
mainNom moderne (GitHub depuis 2020, GitLab depuis 2021)
masterAncien nom par défaut, encore utilisé dans de vieux projets
  • Créée automatiquement à l'initialisation du repo
  • Représente la version stable et déployable du projet
  • Bonne pratique : ne jamais pousser directement sur main

Commandes de gestion des branches

# Lister les branches locales
git branch

# Lister toutes les branches (locales + distantes)
git branch -a

# Créer une nouvelle branche
git branch feature/login

# Créer ET basculer sur la nouvelle branche
git checkout -b feature/login
git switch -c feature/login      # Commande moderne (Git 2.23+)

# Basculer sur une branche existante
git checkout main
git switch main                  # Commande moderne

# Supprimer une branche (après merge)
git branch -d feature/login      # Sécurisé (échoue si non mergée)
git branch -D feature/login      # Force la suppression

Cycle de vie d'une branche

1. Partir de main (code stable)
   git checkout main
   git pull
   git checkout -b feature/user-profile

2. Travailler sur la branche
   # modifier des fichiers...
   git add .
   git commit -m "feat: add user profile page"
   git commit -m "feat: add avatar upload"

3. Pousser la branche vers le remote
   git push -u origin feature/user-profile

4. Ouvrir une Merge Request (MR) / Pull Request (PR)
   → Code review par un collègue

5. Merger dans main après approbation
   git checkout main
   git merge feature/user-profile

6. Supprimer la branche (nettoyage)
   git branch -d feature/user-profile

Nomenclature recommandée des branches

feature/nom-de-la-fonctionnalite     → Nouvelle fonctionnalité
bugfix/description-du-bug            → Correction de bug
hotfix/correction-urgente            → Correctif urgent en production
release/v1.2.0                       → Préparation d'une release
chore/mise-a-jour-dependances        → Tâche de maintenance

Exemples concrets :

feature/user-authentication
feature/payment-integration
bugfix/ticket-2134-login-error
bugfix/cart-total-incorrect
hotfix/security-patch-xss
release/v2.1.0

Bonne pratique : 1 branche par fonctionnalité ou bugfix.


git merge — Fusionner des branches

# Se placer sur la branche de destination
git checkout main

# Fusionner la branche source
git merge feature/login

# Merge avec message de commit explicite
git merge --no-ff feature/login -m "Merge feature/login into main"

Types de merge

Fast-forward merge (pas de commit de merge) :
  main:    A ─── B
                  └── C ─── D  (feature)
  Résultat: A ─── B ─── C ─── D

No fast-forward (crée un commit de merge) :
  main:    A ─── B ─────────────── M  (merge commit)
                  └── C ─── D ──┘

Résoudre un conflit de merge

Un conflit survient quand deux branches modifient la même portion de code.

# Git indique les fichiers en conflit
git merge feature/login
# Auto-merging app.js
# CONFLICT (content): Merge conflict in app.js

# Voir les fichiers en conflit
git status

Le fichier en conflit contient des marqueurs :

<<<<<<< HEAD (votre branche actuelle)
const loginUrl = "/api/v2/login"
=======
const loginUrl = "/api/v1/auth/login"
>>>>>>> feature/login (branche à merger)

Résolution :

# 1. Ouvrir le fichier, choisir la bonne version et supprimer les marqueurs
# 2. Stager le fichier résolu
git add app.js

# 3. Finaliser le merge
git commit -m "fix: resolve merge conflict in app.js"

Merge Requests (MR) / Pull Requests (PR)

Une Merge Request (GitLab) ou Pull Request (GitHub) = demande de fusion d'une branche dans une autre, avec revue de code obligatoire.

Développeur                        Reviewer
────────────                       ──────────────
1. Crée la branche feature/xx
2. Développe la fonctionnalité
3. Push sur le remote
4. Ouvre une MR/PR               → Notifié par email/Slack
                                   5. Examine les changements
                                   6. Laisse des commentaires
                                   7. Approuve ✓ ou Refuse ✗
8. Corrige si besoin
9. Merge dans main ──────────────────────────────────►

Ce qu'un reviewer peut voir dans une MR

Différences ligne par ligne :
  - const loginUrl = "/api/v1/auth"    ← ligne supprimée
  + const loginUrl = "/api/v2/auth"    ← ligne ajoutée

Fichiers modifiés : app.js, auth.js, tests/auth.test.js
Commits inclus : 3 commits

Bonne pratique : Toujours faire relire son code par un autre développeur avant de merger dans main. Cela évite les bugs et partage la connaissance.


À retenir

  • Branche = espace de travail isolé qui ne perturbe pas main
  • git checkout -b feature/xx = créer et basculer sur une nouvelle branche
  • git branch = lister les branches ; git branch -a = toutes (remote inclus)
  • git merge feature/xx = fusionner la branche dans la branche courante
  • Conflit de merge = deux branches ont modifié la même ligne → résolution manuelle
  • Merge Request (GitLab) / Pull Request (GitHub) = demande de merge avec revue de code
  • Bonne pratique : 1 branche par feature/bugfix, nommage feature/xx et bugfix/xx
  • Objectif : main doit toujours être stable et déployable en production
Précédent
Flux de Travail Git — add, commit, push, pull
Suivant
Git Avancé — Commandes, .gitignore & Bonnes Pratiques
Sur cette page
PrécédentSuivant