git:conflit

Analyse les conflits git et propose à l'utilisateur une résolution pas à pas avec validation de chaque étape.

8 stars

Best use case

git:conflit is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Analyse les conflits git et propose à l'utilisateur une résolution pas à pas avec validation de chaque étape.

Teams using git:conflit should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/conflit/SKILL.md --create-dirs "https://raw.githubusercontent.com/atournayre/claude-marketplace/main/git/skills/conflit/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/conflit/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How git:conflit Compares

Feature / Agentgit:conflitStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Analyse les conflits git et propose à l'utilisateur une résolution pas à pas avec validation de chaque étape.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Résolution Interactive de Conflits Git

## Instructions à Exécuter

**IMPORTANT : Exécute ce workflow étape par étape :**


Résoudre les conflits git de manière interactive : $ARGUMENTS

## Purpose
Analyser les conflits git et guider l'utilisateur dans une résolution pas à pas, fichier par fichier, avec validation à chaque étape.

## Variables
- DESTINATION_BRANCH: $1 (branche de destination pour le merge/rebase)
- CURRENT_BRANCH: !`git branch --show-current`
- CONFLICTED_FILES: Liste des fichiers en conflit
- RESOLUTION_MODE: merge ou rebase (détecté automatiquement)

## État Actuel du Repository

- Branche actuelle : !`git branch --show-current`
- Status Git : !`git status --porcelain`
- Conflits détectés : !`git diff --name-only --diff-filter=U`
- Commits divergents : !`git log --oneline HEAD...$DESTINATION_BRANCH --max-count=5`

## Ce Que Fait Cette Commande

1. Détecte s'il y a un merge/rebase en cours ou si on doit l'initier
2. Identifie tous les fichiers en conflit
3. Pour chaque fichier en conflit :
   - Affiche le contexte du conflit
   - Montre les différences entre les versions
   - Propose 3 stratégies de résolution
   - Demande validation avant d'appliquer
4. Vérifie que tous les conflits sont résolus
5. Finalise le merge/rebase

## Workflow

### 1. Validation initiale

**Vérifier DESTINATION_BRANCH obligatoire :**
- Si `DESTINATION_BRANCH` n'est pas fourni → ARRÊTER et demander à l'utilisateur

**Vérifier que DESTINATION_BRANCH existe :**
- `git branch --list "$DESTINATION_BRANCH"` (locale)
- `git branch -r --list "origin/$DESTINATION_BRANCH"` (remote)
- Si n'existe pas → ARRÊTER avec erreur

**Vérifier l'état du repository :**
- `git status` pour détecter :
  - Merge en cours (fichiers "both modified")
  - Rebase en cours (`.git/rebase-merge/` ou `.git/rebase-apply/`)
  - Conflits existants

### 2. Initier l'opération si nécessaire

**Si aucun merge/rebase en cours :**
- Demander à l'utilisateur : "Voulez-vous merger ou rebaser $CURRENT_BRANCH sur $DESTINATION_BRANCH ?"
- Options :
  1. Merge : `git merge $DESTINATION_BRANCH`
  2. Rebase : `git rebase $DESTINATION_BRANCH`
  3. Annuler
- Exécuter l'opération choisie

**Si l'opération échoue avec conflits :**
- Continuer avec l'analyse des conflits

### 3. Analyse des conflits

**Lister tous les fichiers en conflit :**
```bash
git diff --name-only --diff-filter=U
```

**Pour chaque fichier, collecter :**
- Chemin complet du fichier
- Nombre de sections en conflit
- Lignes concernées
- Contexte (fonction/classe/module)

### 4. Résolution interactive par fichier

**Pour chaque fichier en conflit :**

**Étape A : Afficher le contexte**
- Nom du fichier et chemin
- Nombre de conflits dans ce fichier
- `git diff $FICHIER` pour voir les marqueurs de conflit

**Étape B : Analyser les versions**
- Lire le fichier avec Read pour voir les marqueurs :
  - `<<<<<<< HEAD` : version actuelle
  - `=======` : séparateur
  - `>>>>>>> $DESTINATION_BRANCH` : version à merger
- Afficher les différences de manière claire

**Étape C : Proposer 3 stratégies**

1. **Garder la version actuelle (ours)**
   - `git checkout --ours $FICHIER`
   - Quand : notre version est correcte, l'autre est obsolète

2. **Garder la version entrante (theirs)**
   - `git checkout --theirs $FICHIER`
   - Quand : leur version est correcte, la nôtre est obsolète

3. **Résolution manuelle**
   - Utiliser Edit pour fusionner manuellement
   - Supprimer les marqueurs `<<<<<<<`, `=======`, `>>>>>>>`
   - Combiner les changements pertinents des deux versions

**Étape D : Demander confirmation**
- Afficher un résumé de la stratégie choisie
- Demander : "Voulez-vous appliquer cette résolution ? (oui/non/voir le diff)"
- Si "voir le diff" : montrer le résultat avec `git diff --cached $FICHIER`

**Étape E : Appliquer la résolution**
- Exécuter la stratégie choisie
- Marquer le fichier comme résolu : `git add $FICHIER`
- Confirmer : "✅ Conflit résolu dans $FICHIER"

### 5. Vérification finale

**Après avoir résolu tous les fichiers :**
```bash
git status
```
- Vérifier qu'il n'y a plus de fichiers "both modified"
- Vérifier que tous les fichiers conflictuels sont stagés

**Demander confirmation finale :**
- "Tous les conflits sont résolus. Voulez-vous finaliser ?"
- Options :
  1. Oui, finaliser
  2. Non, réviser les changements
  3. Annuler tout (abort)

### 6. Finalisation

**Si merge :**
```bash
git commit --no-edit
# ou si l'utilisateur veut personnaliser :
git commit -m "Merge branch '$DESTINATION_BRANCH' into $CURRENT_BRANCH"
```

**Si rebase :**
```bash
git rebase --continue
```

**Si annulation demandée :**
```bash
git merge --abort   # ou
git rebase --abort
```

## Stratégies de Résolution Détaillées

### Stratégie 1 : Garder la version actuelle (ours)
- Utilisation : Quand notre implémentation est plus récente/correcte
- Commande : `git checkout --ours $FICHIER && git add $FICHIER`
- Attention : Perte des changements de l'autre branche

### Stratégie 2 : Garder la version entrante (theirs)
- Utilisation : Quand la version à merger est plus récente/correcte
- Commande : `git checkout --theirs $FICHIER && git add $FICHIER`
- Attention : Perte de nos changements

### Stratégie 3 : Résolution manuelle intelligente
- Utilisation : Quand les deux versions contiennent des changements valides
- Processus :
  1. Lire le fichier avec Read
  2. Identifier les sections en conflit
  3. Analyser la logique de chaque version
  4. Utiliser Edit pour fusionner :
     - Garder les imports/dépendances des deux côtés
     - Fusionner la logique métier intelligemment
     - Supprimer tous les marqueurs de conflit
  5. Vérifier la syntaxe du résultat
  6. `git add $FICHIER`

## Examples

### Exemple 1 : Merge avec conflits
```bash
# Situation : on est sur feature/auth, on veut merger main
/git:conflit main

# Claude détecte : pas de merge en cours
# Claude demande : "Voulez-vous merger main dans feature/auth ?"
# Utilisateur : "oui, merge"
# Claude exécute : git merge main
# Conflits détectés dans : src/auth.php, config/app.php
# Claude guide la résolution fichier par fichier
```

### Exemple 2 : Rebase en cours avec conflits
```bash
# Situation : rebase en cours, 3 fichiers en conflit
/git:conflit develop

# Claude détecte : rebase en cours sur develop
# Claude liste : file1.php, file2.js, file3.md
# Claude résout interactivement chaque fichier
# Claude finalise : git rebase --continue
```

### Exemple 3 : Résolution manuelle complexe
```bash
/git:conflit main

# Conflit dans src/payment.php :
# HEAD : ajout méthode processRefund()
# main : ajout méthode processChargeback()
# Stratégie : Résolution manuelle
# Claude fusionne les deux méthodes
# Validation : utilisateur confirme
```

## Report Format

```markdown
# Rapport de Résolution de Conflits

## Configuration
- Branche actuelle : $CURRENT_BRANCH
- Branche destination : $DESTINATION_BRANCH
- Type d'opération : merge/rebase

## Conflits Détectés
- Nombre total de fichiers : X
- Fichiers résolus : Y
- Fichiers restants : Z

## Résolutions Appliquées

### Fichier : src/auth.php
- Stratégie : Résolution manuelle
- Raison : Fusion de deux implémentations valides
- Lignes modifiées : 42-58

### Fichier : config/app.php
- Stratégie : Garder version actuelle (ours)
- Raison : Configuration locale spécifique

## Statut Final
✅ Tous les conflits résolus
✅ Merge/rebase finalisé avec succès
```

## Best Practices

### Avant de commencer
- ✅ S'assurer que le working directory est propre
- ✅ Avoir une sauvegarde (commit ou stash)
- ✅ Comprendre les changements des deux branches

### Pendant la résolution
- ✅ Résoudre un fichier à la fois
- ✅ Tester la syntaxe après chaque résolution manuelle
- ✅ Ne jamais garder les marqueurs de conflit (<<<<, ====, >>>>)
- ✅ Valider que la logique est cohérente
- ✅ En cas de doute, demander à l'utilisateur

### Après la résolution
- ✅ Vérifier que le code compile/s'exécute
- ✅ Lancer les tests si disponibles
- ✅ Réviser le diff final avant commit

## Messages d'Erreur et Solutions

### "error: you need to resolve your current index first"
- Cause : Conflits non résolus
- Solution : Continuer la résolution ou faire `git merge --abort`

### "no changes added to commit"
- Cause : Fichiers résolus mais non stagés
- Solution : `git add $FICHIER` après chaque résolution

### "conflict (content): Merge conflict in X"
- Cause : Changements incompatibles dans le même fichier
- Solution : Résoudre avec une des 3 stratégies

## Validation

- ✅ DESTINATION_BRANCH doit exister (locale ou remote)
- ✅ Tous les fichiers en conflit doivent être traités
- ✅ Aucun marqueur de conflit ne doit rester dans les fichiers
- ✅ Tous les fichiers résolus doivent être stagés
- ✅ L'utilisateur doit valider avant chaque résolution
- ✅ L'utilisateur doit confirmer avant la finalisation

## Notes Importantes

- La commande est 100% interactive : chaque action nécessite validation
- L'utilisateur garde le contrôle total du processus
- Possibilité d'annuler à tout moment avec merge/rebase --abort
- Les résolutions manuelles utilisent Edit pour garantir la qualité
- Un rapport détaillé est généré à la fin

Related Skills

fix-grammar

8
from atournayre/claude-marketplace

Fix grammar and spelling errors in one or multiple files while preserving formatting

symfony-framework

8
from atournayre/claude-marketplace

Comprehensive Symfony 6.4 development skill for web applications, APIs, and microservices.

symfony:make

8
from atournayre/claude-marketplace

Cherche si il existe un maker Symfony pour faire la tache demandée et l'utilise si il existe. Si aucun maker n'existe alors utilise la slash command "/prepare"

phpstan-resolver

8
from atournayre/claude-marketplace

Résout automatiquement les erreurs PHPStan en analysant et corrigeant les problèmes de types. Boucle jusqu'à zéro erreur ou stagnation.

elegant-objects

8
from atournayre/claude-marketplace

Vérifie la conformité du code PHP aux principes Elegant Objects de Yegor Bugayenko. Analyse un fichier spécifique ou tous les fichiers modifiés dans la branche.

prompt:validate

8
from atournayre/claude-marketplace

Vérifie la checklist avant exécution et liste les oublis

prompt:transform

8
from atournayre/claude-marketplace

Transforme un prompt en prompt exécutable compatible avec le Task Management System (TaskCreate/TaskUpdate/TaskList)

prompt:team

8
from atournayre/claude-marketplace

Orchestre une équipe d'agents spécialisés pour les tâches complexes. Auto-détecte le type, compose l'équipe, coordonne les phases analyse → challenge → implémentation → QA.

prompt:start

8
from atournayre/claude-marketplace

Démarre un développement avec un starter léger puis active le mode plan

apex

8
from atournayre/claude-marketplace

Systematic implementation using APEX methodology (Analyze-Plan-Execute-eXamine) with parallel agents, self-validation, and optional adversarial review. Use when implementing features, fixing bugs, or making code changes that benefit from structured workflow.

fix-errors

8
from atournayre/claude-marketplace

Fix all ESLint and TypeScript errors with parallel processing using snipper agents

prompt-creator

8
from atournayre/claude-marketplace

Expert prompt engineering for creating effective prompts for Claude, GPT, and other LLMs. Use when writing system prompts, user prompts, few-shot examples, or optimizing existing prompts for better performance.