Entrada

Cómo resolver conflictos en Git paso a paso (sin romper tu proyecto)

Hay un momento bastante típico cuando empiezas a trabajar con Git en serio: todo va bien hasta que aparece un error raro al hacer git push… 😅

Y entonces ves algo como esto:

1
! [rejected] main -> main (fetch first)

Ahí es donde empiezan los conflictos.


🧠 Qué está pasando realmente

Un conflicto en Git ocurre cuando:

  • Has hecho cambios en un archivo
  • Otra versión de ese mismo archivo ya existe en remoto
  • Y ambos cambios afectan a la misma zona

Un caso muy real:

  • En el trabajo modificas page.tsx
  • En casa modificas también page.tsx
  • Subes uno de los cambios
  • Intentas subir el otro…

💥 Git no sabe cuál elegir


📉 El error típico al hacer push

1
git push

Resultado:

1
! [rejected] main -> main (fetch first)

Esto significa:

👉 “Antes de subir tus cambios, necesitas traer los últimos del repositorio”


🔄 El primer paso siempre: sincronizar

1
git pull

Aquí pueden pasar dos cosas:


🟢 Caso 1: todo se mezcla automáticamente

Git hace magia:

1
Auto-merging page.tsx

Y puedes seguir sin problemas:

1
git push

🔴 Caso 2: conflicto detectado

Aquí es donde entra lo interesante:

1
CONFLICT (content): Merge conflict in page.tsx

Git no ha podido resolverlo solo.


🧩 Cómo se ve un conflicto dentro del código

Cuando abres el archivo, verás algo así:

1
2
3
4
5
<<<<<<< HEAD
const mensaje = "Hola desde el trabajo";
=======
const mensaje = "Hola desde casa";
>>>>>>> main

Estas marcas indican:

  • HEAD → tu versión actual
  • ======= → separación
  • main → versión remota

programador confundido mirando código

✍️ Resolver el conflicto paso a paso

Aquí no hay automatismo: decides tú.

Por ejemplo, puedes dejar:

1
const mensaje = "Hola desde casa y trabajo";

Y eliminar completamente:

1
2
3
<<<<<<< HEAD
=======
>>>>>>>

✅ Guardar la solución

Una vez editado:

1
2
3
git add .
git commit -m "resuelvo conflicto"
git push

Y listo 🚀


⚡ Forma más profesional: usar rebase

En lugar de git pull, puedes usar:

1
git pull --rebase

Esto hace que:

  • Tus cambios se apliquen después de los remotos
  • El historial sea más limpio
  • Haya menos merges innecesarios

🧠 Cómo evitar conflictos (o al menos reducirlos)

Algunas reglas que acaban saliendo solas con el tiempo:

  • Antes de trabajar:
1
git pull
  • Haz commits pequeños y frecuentes
  • Evita editar el mismo archivo en dos sitios a la vez
  • Divide componentes (por ejemplo en Next.js)

Ejemplo:

En vez de un solo archivo gigante:

1
page.tsx

Divide en:

1
2
3
components/Header.tsx
components/Footer.tsx
components/Card.tsx

👉 Menos probabilidad de pisarte a ti mismo


🧩 Un caso práctico rápido

Imagina este flujo:

  1. En casa:
1
2
git commit -m "añado header"
git push
  1. En el trabajo (sin hacer pull):
1
2
git commit -m "cambio estilos"
git push ❌
  1. Solución:
1
2
3
git pull
# resolver conflicto
git push

persona resolviendo problema en ordenador

📌 Idea clave que conviene interiorizar

Git no se equivoca ni “rompe cosas”.

Simplemente te dice:

👉 “Aquí hay dos versiones distintas, decide tú cuál es la correcta”

Y eso, aunque al principio asuste un poco, es justo lo que evita perder código sin darte cuenta.


❓ FAQ

¿Qué es un conflicto en Git?

Un conflicto en Git ocurre cuando dos cambios afectan a la misma parte de un archivo y Git no puede decidir automáticamente cuál mantener, por lo que requiere intervención manual.

¿Cuándo suelen aparecer los conflictos en Git?

Suelen aparecer cuando trabajas en varios ordenadores o ramas y modificas el mismo archivo sin haber sincronizado antes con git pull.

¿Cómo se resuelve un conflicto en Git?

Se resuelve editando manualmente el archivo afectado, eliminando las marcas de conflicto y dejando el código final deseado, para luego hacer git add, git commit y git push.

¿Se pueden evitar los conflictos en Git?

Sí, se pueden reducir haciendo git pull antes de trabajar, realizando commits frecuentes y evitando modificar las mismas líneas en diferentes entornos.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.