GIT en el mundo real

Resolviendo conflictos Más videos

Descripción del tema

Ya sabemos como publicar y recibir cambios entre repositorios remotos, lo cual es genial cuando trabajamos solos en un proyecto y queremos tener algún respaldo de nuestro proyecto en un servidor remoto.

Pero lo realmente interesante de GIT es cuando trabajamos en equipo, GIT nos permite trabajar muy fácilmente de manera colaborativa con otros desarrolladores.

Siempre que trabajamos con otras personas tendremos conflictos en nuestras versiones, ya que seguramente otras personas modificarán el mismo archivo y posiblemente hasta las mismas líneas de código, esto es algo muy común y GIT nos permite manejar estos conflictos de manera extremadamente sencilla.

En primer lugar voy a clonar el proyecto que tenemos sobre en mi máquina virtual, luego voy a hacerle algunas modificaciones a las rutas de rails, agregando lo siguiente.

resource :users

Lo siguiente es hacer el add, commit y push. En mi repositorio que tengo en mi mac voy a modificar otra línea en este mismo archivo de la siguiente manera.

resource :projects

Hago el add, commit correspondiente e intento enviar mis cambios al repositorio en Github, al intentar esto sucede el siguiente error.

//Error de fast-forward

Ahora bien, este problema esta sucediendo porque en el repositorio remoto alguien más subió cambios que yo no tengo, es decir mi versión local está atrasada, necesito primero actualizarla. Para eso hago un pull.

$ git pull origin master

Una vez que descargué los nuevos archivos intento hacer el push nuevamente y no debería tener el problema anterior, mis cambios estarían en el repositorio remoto listos para ser descargados por cualquier otro desarrollador.

Es importante mencionar que GIT me hizo el merge de los archivos automáticamente, las lineas de código que modifique en mi máquina virtual y en mi mac están ahí, no tuve que hacer nada especial, ahora bien que pasa si modifico exactamente las mismas lineas?

Regresando a mi máquina virtual voy a hacer un pull para tener los ultimos cambios y modificar la ruta de la siguiente manera.

resource :users, :only => [:index, :show]

Hago el add, commit y push. En mi mac voy a modificar la misma línea de código de la siguiente manera.

resource :users, :only => [:delete,:create]

Hago el add y commit pero si intento hacer el push recibiré el mismo problema anterior, hago el pull para solucionarlo pero ahora veré que existen conflictos!! Gut intenta hacer el merge automáticamente pero justo en esa línea de código que modifique tengo que hacer el merge de manera manual.

Para resolver el conflicto simplemente tengo que abrir el archivo en mi editor preferido y luego ver cual es el código correcto, en este caso el resultado debería ser.

resource :users, :only => [:index, :show, :delete, :create]

Una vez que resolví el conflicto tengo que hacer un add y commit nuevamente para versionar los nuevos cambios, por último hago el push y no debería existir ningún problema.

Pues bien, este es el flujo normal para resolver conflictos, utilicé un ejemplo muy común que seguramente nos sucederá en el futuro.



Te gustaría recibir más tutoriales como este en tu correo?

Este tutorial pertenece al curso GIT en el mundo real, te recomiendo revises el resto de los tutoriales ya que están en secuencia de menor a mayor complejidad.

Si deseas recibir más tutoriales como este en tu correo te recomiendo registrarte al curso, si ya eres miembro solo identifícate y registrate al curso, si no eres miembro te puedes registrar gratuitamente!

Si no gustas registrarte en este momento no es necesario! Aún así puedes recibir los nuevos tutoriales en tu correo! Jamás te enviaremos Spam y puedes cancelar tu suscripción en cualquier momento.

¿Olvidaste tu contraseña?

Se el primero en comentar!

Instructor del curso

Crysfel3

Autor: Crysfel Villa

Lleva un par de años utilizando GIT de manera productiva, antes de GIT utilizaba SVN y mucho antes CVS. No se arrepiente de haber cambiado de sistema de versiones.

Regístrate a este curso

Este tutorial pertenece al curso GIT en el mundo real, revisa todos los tutoriales que tenemos en este mismo curso ya que están en secuencia y van de lo más sencillo a lo más complicado.

Ya que este curso no está finalizado al registrarte podrás recibir en tu correo los nuevos tutoriales de este curso!

Tendrás acceso a descargar los videos, códigos y material adicional.

Podrás resolver los ejercicios incluidos en el curso así como los Quizzes.

Llevarás un registro de tu avance.