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
| Type | Cause |
|---|---|
| Ligne éditée des deux côtés | Modif simultanée |
| Add/Delete | Un supprime, autre modifie |
| Rename/Edit | Renommage + changement |
| Binaire | Fichier non diffable modifié |
| Dir/File | Restructuration chemin |
Processus Structuré
Identifier → Comprendre intentions → Fusionner logiques → Tester → CommitDiagnostic
bash
git status
git diff --name-only --diff-filter=U
git diff --mergeChoisir Ours / Theirs
bash
git checkout --ours chemin/fichier
git checkout --theirs chemin/fichier
git add chemin/fichierNe pas appliquer en aveugle.
Résolution Manuelle Exemple
<<<<<<< HEAD
calculateTotal(cart, 0.1)
=======
calculateTotal(cart, discountRate())
>>>>>>> feature/dynamic-discountFusion :
js
calculateTotal(cart, discountRate() ?? 0.1)Commits Atomiques Aident
bash
git add -pRéduit surface future.
Rebase Proactif
bash
git fetch origin
git rebase origin/mainOutils
| Outil | Atout |
|---|---|
| VS Code Merge | Diff clair |
| Meld | Interface visuelle |
| Beyond Compare | Comparaison avancée |
| IntelliJ | Intégration IDE |
Conflits Binaires
Choisir version ou régénérer :
bash
git checkout --theirs assets/logo.pngAbandonner
bash
git merge --abort
git rebase --abortContinuer Rebase
bash
git rebase --continueRerere (Réutiliser Résolutions)
bash
git config --global rerere.enabled truePrévention
| Pratique | Effet |
|---|---|
| Sync fréquent | Moins divergence |
| PR petites | Conflits plus simples |
| Format auto | Moins bruit |
| Communication refactor | Évite duplication |
Sécurité Avant Commit
bash
yarn test
git diff --checkRé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.
