fbpx
 

Tutorial de Introducción a Git en Xcode [Parte 1]

Tutorial de Introducción a Git en Xcode [Parte 1]

1. Introducción

 

Recuerdo que de pequeño estaba bastante obsesionado con los viajes en el tiempo. Siempre me ha gustado la ciencia ficción y algunas películas hicieron que comenzara a interesarme por este tema. Regreso al futuro, Terminator, 12 monos… todavía recuerdo donde y con quien las vi.

 

git terminator

 

El artículo de esta semana está bastante relacionado con los viajes en el tiempo. Los viajes en el tiempo mientras desarrollamos Aplicaciones.

Si eres Desarrollador iOS o pretendes serlo puede que te hayas encontrado alguna vez en esta situación:

Acabas de terminar de programar una aplicación, la pruebas y ves que funciona perfectamente.

Estás orgulloso de tu trabajo. Te invade esa sensación que solo puedes conocer si alguna vez has creado algo desde cero por ti mismo. Estás eufórico. Te crees el nuevo Mark Zuckerberg. Te vienes arriba. Crees que podrías optimizar tu código mucho más de lo que está ahora. Siempre se ha dicho que el objetivo final es programar con el menor número de lineas de código ¿no? ¿Qué puede salir mal?

Comienzas a hacer cambios. Modificas tu aplicación. Sigues durante bastante tiempo optimizando tu proyecto… Cuando crees que ya lo tienes, pruebas tu app y… No funciona.

No pasa nada, que no cunda el pánico, eres tu quien ha creado esto, por lo que no puede ser muy difícil volver a dejarlo como estaba. Empiezas a deshacer tu trabajo, borras esta linea, modificas esta otra y cuando te das cuenta han pasado varias horas y todavía no has conseguido dejar tu proyecto funcionando de nuevo.

¡Llevas medio día intentando hacer que funcione algo que ya funcionaba! ¿Quien me mandaría a mi tocar nada?

 

git error

 

Si nunca te has encontrado en esta situación es posible que conozcas y utilices algún Sistema de Control de Versiones.

Si eres Desarrollador iOS o pretendes serlo, tienes que utilizar un Sistema de Control de Versiones ó VCS (del inglés Version Control System).

Desde mi punto de vista y espero que pienses igual que yo, esto es algo innegociable.

Recuerdo cuando empezaba a programar, hace muchos años y no utilizaba un VCS en mis proyectos. Tenía que ir creando de forma manual, carpetas con las diferentes versiones de mis programas y si había cometido algún fallo, revisaba una a una esas carpetas para encontrar una versión estable de mi proyecto. La gestión de mi código era un gran problema hasta que descubrí que podía utilizar un VCS.

Si estás comenzando a desarrollar Aplicaciones o si ya tienes algo de experiencia haciéndolo pero nunca has utilizado un VCS, por favor, no lo dejes pasar más tiempo y comienza a usarlo en tus proyectos.

Para todos los que tenéis dudas con este tema, he creado este artículo, que te permitirá entender desde cero como utilizarlo en tus desarrollos.

 

2. ¿Qué vamos a ver en este Tutorial?

 

Vamos a trabajar en un proyecto real utilizando Git a través de Xcode.

Se trata de un Tutorial donde veremos todo lo que necesitas saber y posteriormente lo pondremos en práctica.

Para no aburrirte mucho, el Tutorial estará dividido en 3 partes. En esta primera parte veremos toda la teoría que necesitas dominar para utilizar Git. En la segunda parte del Tutorial nos centraremos en realizar un ejemplo completo con un proyecto real y será ahí donde aplicaremos lo aprendido, utilizando Git a través de Xcode. Por último, en la tercera parte, veremos las opciones más avanzadas e interesantes que puedes realizar con Git.

Dicho esto, ¡Comenzamos!

 

3. ¿Qué es y como funciona un Sistema de Control de Versiones?

 

Un VCS nos permite mantener todo el código de un proyecto almacenado de forma segura. Todo el código permanece almacenado en uno o varios REPOSITORIOS, para tener el control absoluto de nuestro proyecto.

 

Dentro de un repositorio podemos almacenar lo que queramos. No estamos limitados a guardar código, sino que podemos almacenar documentación del proyecto, recursos gráficos, notas relacionadas con el desarrollo… En este tutorial veremos varios ejemplos con código, pero es conveniente que sepas que eres tu quien decide que es lo que quieres almacenar dentro del repositorio

 

El funcionamiento básico sería el siguiente. Comienzo a trabajar en un nuevo proyecto. Creo un repositorio para almacenar todo el código que voy a ir creando. Empiezo con el desarrollo y cada vez que yo quiero, guardo en el repositorio el estado actual de mi proyecto. Imagina que haces una fotografía a tu código y la guardas dentro del repositorio. Continúo trabajando y cuando termino de desarrollar una nueva funcionalidad, hago otra foto y la guardo dentro del repositorio. Si en algún momento me doy cuenta que he cometido cualquier error en mi código, de forma sencilla, puedo revisar todas esas “fotografías”, volver a un estado anterior de mi proyecto y corregirlo.

Es decir, puedes volver a cualquier punto del desarrollo para ver qué aspecto tenía un determinado fichero de código o volver a una versión donde todo funcionaba, antes de haber metido la pata.

Si todavía sigues pensando que esto no es una ventaja suficiente para comenzar a utilizarlo, veamos algunas ventajas más.

 

4. Ventajas de los Sistemas de Control de Versiones

 

  • Puedes realizar desarrollos de nuevas funcionalidades de forma paralela, guardando los cambios en cada una de ellas y uniéndolos al desarrollo principal cuando tu quieras.
  • Si varios programadores trabajan al mismo tiempo en un proyecto, el VCS te permite fusionar los cambios de cada uno de ellos, avisándote en caso de que se hayan realizado varias modificaciones en una misma linea de código.
  • Tienes en todo momento un histórico de los cambios del proyecto y puedes saber quien ha realizado cada cambio.
  • Te permite disponer de un entorno aislado de pruebas donde los cambios realizados no tendrán consecuencias para los usuarios que actualmente usen la versión principal.

 

5. Tipos de Sistemas de Control de Versiones

 

 

git vs subversion

 

Hay una forma de clasificar los sistemas de control de versiones en base a su arquitectura. Existen dos tipos de VCS:

  • VCS Centralizados: Se trabaja con un repositorio centralizado que alberga todo el código, del cual puede ser responsable uno o varios usuarios. Todas las decisiones importantes necesitan la aprobación del responsable o responsables. El más utilizado en este grupo es Subversion.
  • VCS Distribuidos: Cada usuario tiene su propio repositorio. Los distintos repositorios se pueden intercambiar y mezclar revisiones entre ellos. Es frecuente el uso de un repositorio, que sirve normalmente como punto de sincronización de los distintos repositorios locales. El principal exponente de los VCS Distribuidos es Git.

 

Ambos tipos tienen sus ventajas e inconvenientes, que no voy a explicar aquí. He trabajado en empresas que utilizaban Subversion y en otras que utilizaban Git. Por mi experiencia, si todavía no has comenzado a trabajar con ningún VCS, te recomiendo que aprendas a utilizar Git. Para ello, te voy a explicar todo lo que necesitas saber para comenzar a utilizarlo.

 

6. ¿Qué es Git?

 

Git es un VCS diseñado por Linus Torvalds pensando en la eficiencia y el mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente. Su propósito es llevar un registro de los cambios en los ficheros de un proyecto y coordinar el trabajo que varias personas realizan sobre archivos compartidos.

Resumiendo se trata del VCS mas utilizado en el mundo y una herramienta fundamental que debes comprender y saber utilizar si te dedicas al Desarrollo de Aplicaciones iOS.

 

7. ¿Cómo funciona Git?

 

Antes hemos hablado de un concepto importante: Repositorio. Un repositorio es el contenedor donde almacenamos los datos actualizados y todo el histórico de cambios que hemos ido realizando en nuestro proyecto.

En Git, no existe un único repositorio, sino que cada usuario que participa en el proyecto tiene un Repositorio Local y además existe un Repositorio Remoto, donde se almacenan los cambios definitivos que vayamos realizando en el código.

Podemos gestionar dichos repositorios de tres formas diferentes:

  1. A través de comandos directamente desde el Terminal de nuestro Mac.
  2. Utilizando alguna aplicación de terceros como SourceTree.
  3. Directamente desde Xcode.

 

En este tutorial veremos como trabajar con Git y Github directamente desde Xcode.

 

Te recomiendo que si realmente quieres dedicarte al Desarrollo de Aplicaciones iOS comiences a interesarte en como utilizar Git directamente desde el Terminal.

 

En el siguiente esquema puedes ver las diferentes Áreas en las que trabajamos con Git:

git areasImagen obtenida de www.appcoda.com

 

Cada una de las 4 Áreas está marcada con un color diferente:

  • Working Directory
  • Staging Area
  • Local Repository
  • Remote Repository

 

Como puedes ver, las 3 primeras áreas están situadas en nuestro Mac, mientras que el Repositorio Remoto podría estar alojado en cualquier servicio online dedicado a esto, como Github.

En el esquema también puedes ver los comandos que deberías de utilizar si quisieras enviar los cambios en el código de un Área a otra (git add, git commit, git push…).

Expliquemos entonces cada una de las Áreas y cómo pasar de una a otra:

  • Working Directory: Aquí se almacena el código que actualmente estás creando.
  • Staging Area: Aquí se añaden los ficheros de tu código antes de hacer un commit (veremos más adelante qué es esto)
  • Local Repository: Cuando hacemos un commit, hacemos que los ficheros situados en el Staging Area pasen aquí.
  • Remote Repository: Cuando hacemos push (lo explicaré también más adelante), todos los ficheros almacenados en el Local Repository pasan al Remote Repository. Por otro lado, si hacemos pull (pronto sabrás lo que es), recuperaremos todos los cambios que haya en el Remote Repository y los añadiremos a nuestro Local Repository.

 

No te preocupes si ahora mismo te está pareciendo complicado, porque vamos a verlo con un ejemplo y en la segunda y tercera parte del Tutorial, lo veremos paso a paso utilizando un Proyecto real a través de Xcode.

Vayamos entonces con nuestro ejemplo.

 

8. Ejemplo de Funcionamiento de Git

 

Imagínate que en tu tiempo libre comienzas un proyecto con tus compañeros de trabajo. Habéis tenido una idea que soluciona un problema que afecta a mucha gente y crees que una App dedicada a ello podría tener éxito.

Piensa que se trata de una aplicación muy sencilla que únicamente tiene 3 menús:

  • TimeLine
  • Friends
  • Settings

 

Os ponéis con ello y tu comienzas creando las pantallas asociadas al menú Settings. Antes de comenzar, para asegurarte que tienes todos los cambios que hayan realizado tus compañeros en el proyecto, lo primero que tienes que hacer es:

De esta forma recuperas todo el contenido del Remote Repository y lo pasas a tu Local Repository.

Una vez hecho esto, comienzas a programar y terminas una función que devuelve todas las opciones que puede modificar el usuario en el menú Settings. Como has terminado esta parte, haces:

para añadir tu código al Staging Area.

Sigues programando y te das cuenta que tienes que añadir algunas imágenes al proyecto. Las añades y haces de nuevo:

para añadir los cambios al Staging Area.

Cuando has terminado una de las pantallas del menú Settings y has comprobado que funciona correctamente, estás preparado para guardar esos cambios en tu Local Repository. Para ello, haces:

y le asignas un comentario a ese commit, explicando los cambios que has hecho en el proyecto.

Por último, debes subir esos cambios al Remote Repository para que tus compañeros puedan verlos reflejados en sus Local Repositories, así que haces:

En el momento que tus compañeros hagan

podrán recuperar todos los cambios que has realizado en el proyecto y aprovecharse de ellos. De esta forma si necesitan parte de tus modificaciones para poder continuar con su trabajo, pueden hacerlo sin problema.

Estos son los comandos más comunes utilizados en Git y lo que acabamos de ver es solo un ejemplo de un proceso de trabajo típico en un equipo de desarrollo utilizando Git. La semana que viene, en la segunda parte del Tutorial, haremos todo esto de forma real utilizando Xcode y entonces lo entenderás mucho mejor.

 

9. ¿Qué es GitHub?

 

Antes de terminar el Tutorial, me gustaría aclarar algo.

En ocasiones, cuando se habla de Git, se menciona también a GitHub. Es importante aclarar que están directamente relacionados pero evidentemente no son lo mismo.

 

GitHub

 

GitHub es una plataforma de desarrollo colaborativo de software que nos permite alojar proyectos utilizando Git.

Cuando comienzas un proyecto nuevo, necesitas un sitio donde almacenar el repositorio que contendrá dicho proyecto. GitHub te ofrece la posibilidad de alojarlo en su plataforma y además te ofrece algunas herramientas adicionales como una sección wiki, un sistema de seguimiento de problemas, una herramienta de revisión de código o un visor de ramas.

Puedes utilizar GitHub de forma gratuita, con la limitación de que tus repositorios deben ser públicos, es decir, cualquiera puede acceder al código de tus proyectos. Si prefieres que tus repositorios sean privados, también podrás hacerlo, por una cuota de 7 $/mes.

Si quieres dedicarte profesionalmente al Desarrollo de Aplicaciones iOS y no tienes cuenta en GitHub, te recomiendo que te crees una ahora mismo. Tener un perfil en GitHub con repositorios de proyectos creados por ti mismo es algo muy valorado en cualquier proceso de selección en el que participes. Te permite mostrar a empresas que valoren tu contratación, que tienes interés real en el mundo del Desarrollo de Aplicaciones.

 

10. Resumen Final

 

Existen otros muchos comandos que se utilizan en Git, pero como primera toma de contacto es más que suficiente. Por ahora solo hemos visto la parte teórica, pero todo esto nos servirá para tener una buena base para afrontar el ejemplo completo con un proyecto real a través de Xcode que veremos la semana que viene, en la segunda parte del Tutorial.

Aquí tienes un pequeño resumen de los puntos más importantes que hemos visto:

  1. ¿Qué es y como funciona un Sistema de Control de Versiones?
  2. Ventajas de los Sistemas de Control de Versiones
  3. Tipos de sistemas de Control de Versiones
  4. ¿Qué es Git?
  5. ¿Cómo funciona Git?
  6. Ejemplo de funcionamiento de Git
  7. ¿Qué es GitHub?

 

11. Has terminado el Tutorial

 

Has acabado la primera parte del Tutorial de esta semana en EfectoApple. Aquí tienes tu recompensa en forma de video:

 

 

12. ¿Donde ir ahora?

 

La próxima semana publicaré la segunda parte de este tutorial, donde pondremos en práctica lo que hemos visto, utilizando Git en Xcode con un proyecto real.

Si no quieres perderte ningún tutorial de EfectoApple, puedes suscribirte a nuestra newsletter, a través del formulario que tienes al final de este post.

Puedes acceder a más tutoriales disponibles en EfectoApple, desde aquí.

Si este artículo te ha parecido útil, me harías un gran favor compartiéndolo en tus redes sociales.

Y como siempre, para cualquier duda, tienes los comentarios a tu disposición.

 

Etiquetas:
Sin comentarios

Escribe un comentario

Crea una aplicación iOS desde cero con mi Curso gratuito en videoRESERVAR PLAZA
+
10AppsIpad

Descarga las 10 Aplicaciones

Introduce tu Nombre y tu Email para recibir las Apps en tu Correo

Acabo de enviarte un email. Sigue las instrucciones para descargar las Aplicaciones. Puede que tengas que revisar tu buzón de correo no deseado. Gracias.