Resolviendo conflictos Más videos
Descripción del tema
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.
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.
Se el primero en comentar!