resolve-git-conflicts
À propos
Cette compétence Claude aide les développeurs à résoudre en toute sécurité les conflits de fusion, rebase, cherry-pick et stash pop dans Git. Elle guide les utilisateurs pour identifier les sources des conflits, lire les marqueurs de conflit, choisir des stratégies de résolution, et poursuivre ou abandonner les opérations en toute sécurité. Utilisez-la lorsque Git signale des conflits lors d'un pull ou lorsque vous devez récupérer sans risque après un échec de fusion ou de rebase.
Installation rapide
Claude Code
Recommandénpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/resolve-git-conflictsCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
name: resolve-git-conflicts description: > Resuelve conflictos de merge y rebase con estrategias seguras de recuperación. Cubre la identificación de fuentes de conflicto, lectura de marcadores de conflicto, elección de estrategias de resolución y cómo continuar o abortar operaciones de forma segura. Úsalo cuando un git merge, rebase, cherry-pick o stash pop reporte conflictos, cuando un git pull resulte en cambios conflictivos, o cuando necesites abortar y reiniciar de forma segura una operación de merge o rebase fallida. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: git complexity: intermediate language: multi tags: git, merge-conflicts, rebase, conflict-resolution, version-control locale: es source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16
Resolver Conflictos Git
Identifica, resuelve y recupera conflictos de merge y rebase.
Cuándo Usar
- Un
git mergeogit rebasereporta conflictos - Un
git cherry-pickno puede aplicarse limpiamente - Un
git pullresulta en cambios conflictivos - Un
git stash popentra en conflicto con el árbol de trabajo actual
Entradas
- Requerido: Repositorio con conflictos activos
- Opcional: Estrategia de resolución preferida (ours, theirs, manual)
- Opcional: Contexto sobre qué cambios deben tener prioridad
Procedimiento
Paso 1: Identificar la Fuente del Conflicto
Determina qué operación causó el conflicto:
# Check current status
git status
# Look for indicators:
# "You have unmerged paths" — merge conflict
# "rebase in progress" — rebase conflict
# "cherry-pick in progress" — cherry-pick conflict
La salida del estado te indica qué archivos tienen conflictos y qué operación está en curso.
Esperado: git status muestra archivos listados bajo "Unmerged paths" e indica la operación activa.
En caso de fallo: Si git status muestra un árbol limpio pero esperabas conflictos, la operación puede haberse completado o abortado ya. Revisa git log para ver la actividad reciente.
Paso 2: Leer los Marcadores de Conflicto
Abre cada archivo en conflicto y localiza los marcadores de conflicto:
<<<<<<< HEAD
// Your current branch's version
const result = calculateWeightedMean(data, weights);
=======
// Incoming branch's version
const result = computeWeightedAverage(data, weights);
>>>>>>> feature/rename-functions
- De
<<<<<<< HEADa=======: Tu rama actual (o la rama sobre la que estás haciendo rebase) - De
=======a>>>>>>>: Los cambios entrantes (la rama que se fusiona o el commit que se aplica)
Esperado: Cada archivo en conflicto contiene uno o más bloques con marcadores <<<<<<<, ======= y >>>>>>>.
En caso de fallo: Si no se encuentran marcadores pero los archivos aparecen como conflictivos, el conflicto puede ser un archivo binario o un conflicto de archivo eliminado vs. modificado. Revisa git diff --name-only --diff-filter=U para la lista completa.
Paso 3: Elegir una Estrategia de Resolución
Merge manual (más común): Edita el archivo para combinar lógicamente ambos cambios, luego elimina todos los marcadores de conflicto.
Aceptar los nuestros (conservar la versión de la rama actual):
# For a single file
git checkout --ours path/to/file.R
git add path/to/file.R
# For all conflicts
git checkout --ours .
git add -A
Aceptar los suyos (conservar la versión de la rama entrante):
# For a single file
git checkout --theirs path/to/file.R
git add path/to/file.R
# For all conflicts
git checkout --theirs .
git add -A
Esperado: Tras la resolución, el archivo contiene el contenido fusionado correcto sin marcadores de conflicto restantes.
En caso de fallo: Si elegiste el lado equivocado, vuelve a leer la versión en conflicto desde la base de la fusión. Durante un merge, git checkout -m path/to/file recrea los marcadores de conflicto para que puedas intentarlo de nuevo.
Paso 4: Marcar Archivos como Resueltos
Después de editar cada archivo en conflicto:
# Stage the resolved file
git add path/to/resolved-file.R
# Check remaining conflicts
git status
Repite para cada archivo listado bajo "Unmerged paths".
Esperado: Todos los archivos pasan de "Unmerged paths" a "Changes to be committed". No quedan marcadores de conflicto en ningún archivo.
En caso de fallo: Si git add falla o quedan marcadores, vuelve a abrir el archivo y asegúrate de que todas las líneas <<<<<<<, ======= y >>>>>>> fueron eliminadas.
Paso 5: Continuar la Operación
Una vez resueltos todos los conflictos:
Para merge:
git commit
# Git auto-populates the merge commit message
Para rebase:
git rebase --continue
# May encounter more conflicts on subsequent commits — repeat steps 2-4
Para cherry-pick:
git cherry-pick --continue
Para stash pop:
# Stash pop conflicts don't need a continue — just commit or reset
git add .
git commit -m "Apply stashed changes with conflict resolution"
Esperado: La operación se completa. git status muestra un árbol de trabajo limpio (o avanza al siguiente commit durante el rebase).
En caso de fallo: Si el comando continue falla, revisa git status en busca de archivos no resueltos. Todos los conflictos deben estar resueltos antes de continuar.
Paso 6: Abortar si es Necesario
Si la resolución es demasiado compleja o elegiste el enfoque equivocado, aborta de forma segura:
# Abort merge
git merge --abort
# Abort rebase
git rebase --abort
# Abort cherry-pick
git cherry-pick --abort
Esperado: El repositorio vuelve al estado anterior al inicio de la operación. Sin pérdida de datos.
En caso de fallo: Si el abort falla (poco frecuente), revisa git reflog para encontrar el commit anterior a la operación y usa git reset --hard <commit> para restaurarlo. Úsalo con precaución — esto descarta los cambios sin commit.
Paso 7: Verificar la Resolución
Después de que la operación se complete:
# Verify clean working tree
git status
# Check that the merge/rebase result is correct
git log --oneline -5
git diff HEAD~1
# Run tests to confirm nothing is broken
# (language-specific: devtools::test(), npm test, cargo test, etc.)
Esperado: Árbol de trabajo limpio, historial de merge correcto, pruebas pasan.
En caso de fallo: Si las pruebas fallan tras la resolución, el merge puede haber introducido errores lógicos aunque los conflictos sintácticos estén resueltos. Revisa el diff detenidamente y corrige.
Validación
- No quedan marcadores de conflicto (
<<<<<<<,=======,>>>>>>>) en ningún archivo -
git statusmuestra un árbol de trabajo limpio - El historial de merge/rebase es correcto en
git log - Las pruebas pasan después de la resolución de conflictos
- No se introdujeron cambios no intencionados
Errores Comunes
- Aceptar ciegamente un lado:
--ourso--theirsdescarta completamente el otro lado. Úsalo solo cuando tengas la certeza de que una versión es completamente correcta. - Dejar marcadores de conflicto en el código: Busca siempre en todo el archivo marcadores restantes después de editar. Una resolución parcial rompe el código.
- Hacer amend durante el rebase: Durante un rebase interactivo, no uses
--amenda menos que el paso del rebase lo indique expresamente. Usagit rebase --continueen su lugar. - Perder trabajo al abortar:
git rebase --abortygit merge --abortdescartan todo el trabajo de resolución. Solo aborta si quieres empezar de nuevo. - No probar después de la resolución: Un merge sintácticamente correcto puede seguir siendo lógicamente incorrecto. Ejecuta siempre las pruebas.
- Forzar push después del rebase: Tras hacer rebase de una rama compartida, coordina con los colaboradores antes de forzar el push, ya que reescribe el historial.
Habilidades Relacionadas
commit-changes- hacer commit después de resolver conflictosmanage-git-branches- flujos de trabajo de ramas que llevan a conflictosconfigure-git-repository- configuración del repositorio y estrategias de merge
Dépôt GitHub
Compétences associées
railway-docs
DocumentationCette compétence récupère la documentation actuelle de Railway pour répondre aux questions sur les fonctionnalités, le fonctionnement ou des URL spécifiques de la documentation. Elle garantit que les développeurs reçoivent des informations précises et à jour directement depuis les sources officielles de Railway. Utilisez-la lorsque les utilisateurs demandent comment fonctionne Railway ou font référence à la documentation de Railway.
n8n-code-python
DocumentationCette compétence Claude offre un accompagnement expert pour écrire du code Python dans les nœuds Code de n8n, en particulier pour utiliser la bibliothèque standard de Python et travailler avec la syntaxe spéciale de n8n comme `_input`, `_json` et `_node`. Elle aide les développeurs à comprendre les limites de Python dans n8n et recommande d'utiliser JavaScript pour la plupart des workflows, tout en proposant des solutions Python pour des besoins spécifiques de transformation de données.
archon
DocumentationLa compétence Archon offre une recherche sémantique alimentée par RAG et une gestion de projet via une API REST. Utilisez-la pour interroger la documentation, gérer des projets/tâches hiérarchiques et effectuer de la recherche de connaissances avec des capacités de téléchargement de documents. Priorisez toujours Archon en premier lors de la recherche dans une documentation externe avant d'utiliser d'autres sources.
n8n-code-javascript
DocumentationCette compétence Claude fournit des conseils d'expert pour écrire du code JavaScript dans les nœuds Code d'n8n. Elle couvre la syntaxe essentielle spécifique à n8n comme les variables `$input`/`$json`, les assistants HTTP et la gestion des DateTime, tout en résolvant les erreurs courantes. Utilisez-la lors du développement de workflows n8n nécessitant un traitement JavaScript personnalisé dans les nœuds Code.
