Sincronización de los Repositorios
Desliza para mostrar el menú
Como se mencionó en el capítulo anterior, es necesario sincronizar la rama local con el repositorio remoto. Para ello, se debe ejecutar el comando git pull:
git pull
Al ejecutar el comando git pull, Git obtuvo actualizaciones pero detectó que las ramas local y remota han divergido, lo que significa que existen cambios en ambas ramas que deben conciliarse. Git no pudo continuar porque necesita saber cómo manejar estas diferencias, así que se debe establecer la opción merge y ejecutar nuevamente el comando git pull:
git config pull.rebase false
La operación rebase se abordará más adelante en este curso.
git pull
Git intentó fusionar automáticamente los cambios locales y remotos en README.md, pero encontró un conflicto de fusión. Observa el árbol de commits, que indica dónde ocurrieron las divergencias y los conflictos:
git log --graph --oneline --all
Resolución del conflicto
Como puedes ver, nuestro commit local actual y el commit en la rama remota main comparten un ancestro común, pero se separan, lo que genera el conflicto de fusión que debemos resolver. Para hacerlo, abriremos el archivo README.md en el editor Vim:
vim README.md
Para resolver este conflicto, se debe ingresar al modo de inserción presionando i, eliminar los marcadores de conflicto y combinar estos cambios de la siguiente manera:
A continuación, debes presionar la tecla Escape, escribir :wq y presionar la tecla Enter para guardar los cambios y salir de Vim. Ahora, para finalizar la fusión, el archivo README.md debe ser agregado al área de preparación y luego confirmado utilizando los siguientes comandos:
git add README.md
git commit
Después de ejecutar el comando git commit, se abrirá el editor de texto predeterminado (muy probablemente, Vim). Puedes dejar el mensaje de confirmación predeterminado y salir de Vim de la misma manera que acabamos de hacer, o puedes editar el mensaje y luego salir.
Finalmente, se puede ejecutar de forma segura el comando git push y verificar que la fusión de tres vías fue exitosa mostrando el árbol de confirmaciones:
git log --graph --oneline --all
Resumen de las acciones realizadas en estos dos capítulos:
-
Simulación de colaboración realizando cambios tanto localmente como remotamente en el archivo
README.md; -
Confirmación inicial de un cambio directamente en el repositorio remoto, seguida de un cambio diferente localmente;
-
Al intentar enviar los cambios locales, surgió un conflicto porque el repositorio remoto tenía nuevas actualizaciones;
-
Para resolverlo, se descargaron los cambios del repositorio remoto, lo que resultó en un conflicto de fusión;
-
Resolución manual del conflicto en el archivo
README.mdutilizando el editor Vim, confirmación de los cambios resueltos y envío exitoso de las actualizaciones finales al repositorio remoto.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla