Fusionar Cambios (Merge)
Continuando con el ejemplo anterior, has terminado el "Modo Oscuro" en tu rama aislada feature-modo-oscuro. Todo funciona perfecto y ahora necesitas llevar ese código nuevo a la rama principal (main).
A esto se le llama fusión (merge).
Pasos para hacer Merge Localmente
Hacer un merge requiere moverte a la rama receptora primero y luego "llamar" a la rama con los cambios.
- Muévete a la rama principal (la que va a recibir los cambios):
git switch main - Verifica que tus demás ramas estén al día y limpias de cambios sin guardar:
git status - Ejecuta el merge especificando la rama que quieres fusionar HACIA TI:
git merge feature-modo-oscuro
Si nadie más modificó los mismos archivos que tú en la rama principal mientras estabas trabajando, Git hará un proceso automático llamado Fast-forward y listo, tu código ya está unido en la rama oficial.
💥 Conflictos de Fusión (Merge Conflicts)
A veces, Git no puede hacer el "merge" automáticamente. Esto ocurre si:
- Tú y un compañero modificaron exactamente la misma línea de un archivo.
- Alguien borró un archivo que tú estabas modificando.
Cuando esto ocurre, al ejecutar git merge, Git detendrá el proceso y arrojará un mensaje de advertencia enorme diciendo "CONFLICT (content): Merge conflict in...".
No entres en pánico. Git simplemente te está pidiendo ayuda humana porque no sabe cuál de las dos versiones de esa línea es la correcta.
Cómo resolver un conflicto
- Abre tu editor de código (ej. VS Code). El editor te resaltará visualmente en colores los archivos donde ocurrió el choque.
- Git inyectará unos marcadores especiales en tu código. Se ven así:
<<<<<<< HEAD (Current Change - Lo que había en main)
<h1>Bienvenido al proyecto principal</h1>
=======
<h1>Bienvenido en su versión modo oscuro!</h1>
>>>>>>> feature-modo-oscuro (Incoming Change - Lo que estás intentando traer)
- Borra los marcadores de Git. Borra manualmente los
<<<<<<<, los====y los>>>>>>>. - Deja el código como tú quieres que quede en su versión final. Puede ser aceptar la versión de arriba, la de abajo, o re-escribir una tercera línea que combine lo mejor de ambas.
- Guarda el archivo.
Terminar el Merge Manual
Una vez que has limpiado todos los conflictos en todos los archivos, necesitas decirle a Git que ya solucionaste el choque. Esto se hace creando un nuevo commit final:
git add .
git commit -m "Se realiza merge de feature-modo-oscuro solucionando el conflicto en index.html"
Consejo VS Code: Editores modernos como VS Code o extensiones como GitLens tienen botones rápidos encima de los conflictos que dicen "Aceptar cambio actual", "Aceptar cambio entrante" o "Aceptar ambos" para hacer este proceso de borrado más fácil.