| name | merge-conflict-resolver |
| description | Détection, analyse et résolution automatisée des conflits de fusion Git. |
| version | 1.0.0 |
| author | E.V.A — The Hive |
| license | MIT |
| platforms | ["linux","macos"] |
| metadata | {"eva":{"tags":["github","git","merge","conflict","resolution"],"related_skills":["github-pr-automation","code-review-bot","github-pr-workflow"]}} |
Merge Conflict Resolver
Détecte, analyse et résout automatiquement les conflits de fusion Git. Conçu pour s'intégrer avec le pipeline auto-pr.sh.
Détection des conflits
git merge-tree $(git merge-base HEAD main) HEAD main | grep -A 3 "^@@.*@@.*CONFLICT" || echo "Aucun conflit détecté"
git merge --no-commit --no-ff main 2>&1 || true
git merge --abort 2>/dev/null || true
Analyse des conflits
Quand un conflit est détecté, suivre cette procédure :
1. Lister les fichiers en conflit
git diff --name-only --diff-filter=U
git status --short | grep "^UU"
2. Analyser chaque conflit
grep -n "^<<<<<<<\\|^=======\\|^>>>>>>>" chemin/vers/fichier.conflictuel
3. Stratégies de résolution
Résolution manuelle assistée
read_file "chemin/fichier.conflictuel"
Stratégies automatiques
| Situation | Stratégie | Commande |
|---|
| Notre code + leur code = OK | Prendre les deux | git checkout --ours -- path NE FONCTIONNE PAS — voir ci-dessous |
| Notre changement écrase le leur | Prendre le nôtre | git checkout --ours chemin/fichier |
| Leur changement écrase le nôtre | Prendre le leur | git checkout --theirs chemin/fichier |
| Changements complémentaires | Fusion manuelle | Voir Résolution contextuelle |
Prendre uniquement notre version
git checkout --ours chemin/vers/fichier
git add chemin/vers/fichier
Prendre uniquement leur version
git checkout --theirs chemin/vers/fichier
git add chemin/vers/fichier
Résolution contextuelle (recommandée)
read_file "chemin/vers/fichier"
4. Valider après résolution
git add chemin/vers/fichier
git diff --name-only --diff-filter=U | wc -l
git diff --cached --name-only -- '*.py' | xargs python3 -m py_compile 2>/dev/null || echo "⚠️ Erreur syntaxe Python"
git commit -m "merge: résolution conflit avec main"
Pipeline de résolution automatique
Script intégré au cas où la résolution humaine n'est pas possible :
CONFLICT_FILES=$(git diff --name-only --diff-filter=U)
echo "Fichiers en conflit: $CONFLICT_FILES"
for file in $CONFLICT_FILES; do
read_file "$file"
git add "$file"
done
git commit -m "merge: résolution automatique des conflits dans $(echo $CONFLICT_FILES | wc -w) fichier(s)"
Anti-patterns
- NE PAS utiliser
git merge -X theirs (trop agressif — ignore notre logique)
- NE PAS utiliser
git merge --abort après avoir commencé la résolution
- NE PAS utiliser
git reset --hard avant d'avoir sauvegardé les changements
- TOUJOURS faire
git diff --check après résolution (trailing whitespace)
- TOUJOURS re-tester (
pytest, npm test, etc.) après résolution