Skip to content

Stratégies de Résolution de Conflits Git

Vue d'Ensemble

Les conflits signalent un travail parallèle. Objectif : préserver l'intention des deux côtés.

Types Communs

TypeCause
Ligne éditée des deux côtésModif simultanée
Add/DeleteUn supprime, autre modifie
Rename/EditRenommage + changement
BinaireFichier non diffable modifié
Dir/FileRestructuration chemin

Processus Structuré

Identifier → Comprendre intentions → Fusionner logiques → Tester → Commit

Diagnostic

bash
git status
git diff --name-only --diff-filter=U
git diff --merge

Choisir Ours / Theirs

bash
git checkout --ours chemin/fichier
git checkout --theirs chemin/fichier
git add chemin/fichier

Ne pas appliquer en aveugle.

Résolution Manuelle Exemple

<<<<<<< HEAD
calculateTotal(cart, 0.1)
=======
calculateTotal(cart, discountRate())
>>>>>>> feature/dynamic-discount

Fusion :

js
calculateTotal(cart, discountRate() ?? 0.1)

Commits Atomiques Aident

bash
git add -p

Réduit surface future.

Rebase Proactif

bash
git fetch origin
git rebase origin/main

Outils

OutilAtout
VS Code MergeDiff clair
MeldInterface visuelle
Beyond CompareComparaison avancée
IntelliJIntégration IDE

Conflits Binaires

Choisir version ou régénérer :

bash
git checkout --theirs assets/logo.png

Abandonner

bash
git merge --abort
git rebase --abort

Continuer Rebase

bash
git rebase --continue

Rerere (Réutiliser Résolutions)

bash
git config --global rerere.enabled true

Prévention

PratiqueEffet
Sync fréquentMoins divergence
PR petitesConflits plus simples
Format autoMoins bruit
Communication refactorÉvite duplication

Sécurité Avant Commit

bash
yarn test
git diff --check

Récupérer Après Erreur

bash
git reflog
git reset --hard <hash>

Résumé

Conflits gérés méthodiquement = faible coût cognitif. Intention > ordre brut des lignes.