Probar archivos sin conflictos
En los pasos anteriores, identificamos y examinamos un archivo con un conflicto de fusión (merge conflict) (message.txt
). Sin embargo, durante una fusión, también pueden haber archivos que se hayan modificado en ambas ramas (branches) pero sin conflictos. Git fusiona automáticamente estos archivos.
En este paso, crearemos un nuevo archivo en una de las ramas y veremos cómo Git lo maneja durante el proceso de fusión. Esto nos ayudará a entender que los conflictos solo ocurren cuando los cambios se solapan en el mismo archivo.
Asegúrate de que todavía estés en el directorio ~/project/my-time-machine
y en la rama master
(donde ocurrió el conflicto de fusión).
Creemos un nuevo archivo llamado notes.txt
en la rama master
:
echo "Important notes for the project." > notes.txt
git add notes.txt
git commit -m "Add project notes"
Ahora, cambiemos de nuevo a la rama feature/greeting
:
git checkout feature/greeting
En esta rama, el archivo notes.txt
aún no existe. Creemos un archivo diferente aquí, por ejemplo, todo.txt
:
echo "Things to do: finish the lab." > todo.txt
git add todo.txt
git commit -m "Add a todo list"
Ahora, cambiemos de nuevo a la rama master
e intentemos la fusión nuevamente. Aunque ya hemos resuelto el conflicto en message.txt
, el proceso de fusión debe completarse.
git checkout master
git merge feature/greeting
Esta vez, dado que ya hemos resuelto el conflicto en message.txt
y lo hemos agregado al área de preparación (staging area) (aunque no mostramos explícitamente ese paso después de editar, Git a menudo prepara el archivo después de la resolución manual del conflicto), Git debería poder completar la fusión. Puedes ver una salida que indique que la fusión se ha completado.
Veamos el estado nuevamente:
git status
La salida ahora debería mostrar que estás "On branch master" y que el árbol de trabajo está limpio, lo que significa que no hay cambios pendientes ni rutas no fusionadas.
On branch master
nothing to commit, working tree clean
Ahora, veamos si los archivos de ambas ramas están presentes en la rama master
:
ls
Deberías ver tanto message.txt
, notes.txt
(de la rama master
) y todo.txt
(de la rama feature/greeting
) en la lista.
message.txt notes.txt todo.txt
Esto demuestra que Git fusionó con éxito los cambios de feature/greeting
, incluyendo el nuevo archivo todo.txt
, sin ningún conflicto porque todo.txt
no existía en la rama master
. Los conflictos solo surgen cuando el mismo archivo tiene cambios superpuestos en las ramas que se están fusionando.
Comprender cómo Git maneja tanto los archivos con conflictos como los sin conflictos durante una fusión es esencial para gestionar efectivamente la historia de tu proyecto.