GUIDE TECHNIQUE · GITHUB
Résoudre les conflits de fusion d’une pull request GitHub
Diagnostiquer et résoudre un conflit de fusion GitHub sur une branche de pull request, sans écraser les changements de main ni perdre les contributions parallèles.
L’ESSENTIEL EN BREF
Les étapes clés
Ce guide présente 5 étapes, de « Lire la nature du conflit dans la pull request » à « Mettre à jour la pull request et relancer les contrôles ».
Avant de commencer : Une pull request de recette signalant des conflits de fusion.
01 · CADRAGE
Périmètre et résultat visé
Résultat attendu : Le diff ne contient plus de marqueurs de conflits.
Public concerné : Développeurs, responsables de revue de code, intégrateurs et équipes DevOps
Git CLI et pull requests GitHub. Exemple avec main comme branche cible ; adapter les noms à la politique du dépôt.
Contrôlez les versions, les droits et les options disponibles dans votre environnement avant de suivre la procédure.
02 · AVANT DE COMMENCER
Prérequis et points de contrôle
- Une pull request de recette signalant des conflits de fusion.
- Une copie locale propre et les droits nécessaires sur la branche de travail.
- Une compréhension du comportement attendu de chaque modification conflictuelle.
- Une procédure de validation fonctionnelle et des contrôles CI après résolution.
03 · VUE D’ENSEMBLE
Comprendre l’architecture et les flux
04 · TUTORIEL
Procédure complète, étape par étape
Suivez les étapes dans l’ordre et contrôlez chaque résultat avant de poursuivre. Renseignez les paramètres adaptés à votre environnement.
ÉTAPE 1 / 5
Lire la nature du conflit dans la pull request
Le simple affichage de marqueurs ne suffit pas à connaître la logique métier impactée.
- Relever les fichiers conflictuels affichés par GitHub.
- Consulter les échanges de revue et l’origine des modifications.
- Identifier les responsables des deux changements.
git fetch origin
git status --short
git log --oneline --graph --all -12À vérifier : Les fichiers à résoudre et les intervenants à consulter sont identifiés.
Point de vigilance : Éviter de choisir arbitrairement « ours » ou « theirs » lorsque les deux modifications répondent à des besoins distincts.
ÉTAPE 2 / 5
Synchroniser la branche de travail avec main
Résoudre le conflit localement facilite l’inspection des diffs et l’exécution des tests.
- Se placer sur la branche source de la pull request.
- Récupérer main depuis le dépôt distant.
- Fusionner main dans la branche de recette, sans modifier main.
git switch feature/ma-pr
git fetch origin
git merge origin/main
git status --shortÀ vérifier : Les conflits éventuels sont listés ; main n’a pas été modifiée.
Point de vigilance : Ne pas lancer git reset --hard sur une copie contenant du travail non sauvegardé.
ÉTAPE 3 / 5
Résoudre le code selon l’intention fonctionnelle
La résolution correcte peut nécessiter une combinaison des deux changements.
- Ouvrir chaque fichier contenant les marqueurs <<<<<<<, ======= et >>>>>>>.
- Comparer les deux versions et écrire une version cohérente.
- Demander l’avis de l’auteur du changement si la règle métier n’est pas évidente.
git diff --name-only --diff-filter=U
git diff --check
# Corriger les fichiers dans l’éditeur avant git add.À vérifier : Le code de résolution ne contient plus de marqueurs ni de modifications non voulues.
Point de vigilance : Un conflit résolu syntaxiquement peut encore être incorrect fonctionnellement.
ÉTAPE 4 / 5
Valider le résultat et terminer la fusion locale
Les contrôles doivent porter sur la version combinée.
- Relire le diff et exécuter les tests propres au projet.
- Ajouter uniquement les fichiers résolus.
- Terminer le commit de fusion une fois les changements contrôlés.
git diff --check
git status --short
git add chemin/du-fichier
git commitÀ vérifier : Le commit de résolution est créé et l’espace de travail est propre.
Point de vigilance : Si la résolution devient incertaine, utiliser git merge --abort avant de la committer.
ÉTAPE 5 / 5
Mettre à jour la pull request et relancer les contrôles
La vérification de CI et la revue doivent suivre la nouvelle tête de branche.
- Pousser normalement la branche source de la PR.
- Vérifier la disparition du signal de conflit dans GitHub.
- Relancer ou examiner la CI et les approbations nécessaires avant fusion.
git push origin feature/ma-pr
# Dans GitHub : vérifier Files changed et Checks.À vérifier : GitHub permet la revue de la résolution et applique les règles de fusion sur le dernier commit.
Point de vigilance : Éviter le force push ; prévenir les reviewers si la résolution touche le comportement fonctionnel.
RÉFÉRENCES TECHNIQUES
Documentation officielle
Retrouvez les prérequis, les fonctionnalités et les versions prises en charge par GitHub. Vérifiez les commandes sur un environnement de test avant leur utilisation en production.
05 · RECETTE
Comment vérifier que tout fonctionne ?
Le diff ne contient plus de marqueurs de conflits.
Les changements métier concurrents ont été explicitement pris en compte.
Les contrôles CI sont relancés après la résolution.
main est inchangée tant que la pull request n’est pas fusionnée.
06 · DIAGNOSTIC
Problèmes fréquents et résolution
git merge signale un conflit
Cause probable : Deux branches ont modifié des zones incompatibles
Que faire : Inspecter les fichiers avec git diff --name-only --diff-filter=U.
Le commit refuse de terminer
Cause probable : Fichier non résolu ou non ajouté
Que faire : Corriger les marqueurs puis git add chaque fichier.
La CI échoue après résolution
Cause probable : Le code combiné introduit une régression
Que faire : Reproduire le contrôle et corriger sur la branche PR.
La PR reste non fusionnable
Cause probable : Nouvelle évolution de main ou autre règle GitHub
Que faire : Vérifier l’état des checks, les reviews et l’actualité de la branche.
07 · QUESTIONS PRATIQUES
Questions fréquentes
Faut-il utiliser l’éditeur de conflits GitHub ?
L’éditeur web convient à certains conflits simples. En cas de logique complexe, privilégier un IDE et les tests locaux.
Pourquoi fusionner main dans la branche PR ?
Cette méthode conserve les commits publics de la PR tout en intégrant les derniers changements de main.
Comment annuler une tentative de résolution ?
Avant le commit final, git merge --abort permet d’annuler la fusion en cours si les modifications sont propres.
Un conflit réglé garantit-il l’absence de bug ?
Non. La résolution doit être soumise à une revue et à une validation technique/fonctionnelle.
AUTRES TECHNOLOGIES
Guides complémentaires
VOTRE ENVIRONNEMENT
Besoin d’aller plus loin sur votre environnement ?
Gouvernance, CI/CD et pratiques DevOps : échangeons sur la sécurité et la fiabilité de vos workflows GitHub.
Échanger avec ADN Consulting