fbpx
 

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

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

1. Introducción

 

Hoy vamos a ver la tercera y última parte del Tutorial sobre Git que comenzamos hace 3 semanas en EfectoApple.

Comenzamos con la primera parte revisando algunos conceptos teóricos fundamentales para entender correctamente Git.

Continuamos con la segunda parte creando un proyecto real en el que vimos algunas operaciones básicas de Git.

Hoy finalizaremos con algunas operaciones algo más avanzadas de Git, que te servirán para trabajar en cualquier proyecto de desarrollo.

 

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

 

Continuaremos con el proyecto de prueba que comenzamos la semana pasada. Veremos algunos de los puntos más importantes que debes conocer a la hora de trabajar con Git.

  1. Crearemos una rama (Branch)
  2. Nos conectaremos a un repositorio remoto alojado en GitHub
  3. Enviaremos cambios a ese repositorio remoto (Push)
  4. Recuperaremos cambios de ese repositorio remoto (Pull)

A través de este proyecto de prueba, aprenderás todo lo que necesitas saber para trabajar en un equipo de desarrollo utilizando repositorios git.

No te hago esperar más y… ¡Comenzamos!

 

3. Trabajando con Ramas en Git

 

Cuando se trabaja en el desarrollo de una App, una opción muy común es dividir el trabajo en características o funcionalidades (Features).

Por ejemplo, si estás desarrollando una App basada en una nueva red social, podrías dividir el trabajo en las siguientes Features:

  • Subir contenido multimedia a la App
  • Mostrar contenido al usuario en su TimeLine
  • Permitir al usuario modificar su perfil
  • Permitir al usuario seguir a otros usuarios
  • etc, etc…

De esta forma, si comenzamos por las features fundamentales, podemos conseguir tener un producto mínimo viable en el menor tiempo posible. Es decir, crearemos una versión 0.1 de nuestra app que solo tendrá la funcionalidad principal: Por ejemplo, subir contenido multimedia a la app.

Una vez que hemos comprobado que esa feature cumple su cometido, podremos pasar a desarrollar la siguiente funcionalidad de nuestra lista.

Pero aquí viene el problema. Si la versión 0.1 de nuestra app está funcionando, ¿vamos a arriesgarnos a hacer modificaciones en ella para añadir una nueva feature? ¿Y si al hacer esas modificaciones estropeamos la versión 0.1 que ya estaba funcionando?

Lo ideal sería que pudiéramos guardar esa versión 0.1, para que permanezca inalterada hasta que terminemos la nueva feature y comprobemos que funciona correctamente. En ese momento, es cuando podremos unir esta feature a nuestra versión 0.1, obteniendo de esta forma la versión 0.2 de nuestra app.

¿Cómo podemos hacer esto?

Utilizando Branches (Ramas).

Debes imaginar tu repositorio como un árbol. Cuando creas el repositorio con git, únicamente está formado por una rama, que podría ser el tronco del árbol. A medida que vas avanzando en el proyecto puedes ir creando diferentes branches, que son las ramas del árbol. Sin embargo, hay algo que diferencia nuestro repositorio git de un árbol y es que en un momento determinado, nosotros podemos hacer que las ramas de nuestro repositorio vuelvan a converger con el tronco del árbol. No te preocupes por esto ahora, que ya lo veremos más adelante.

 

git branches

 

Se podría decir que una rama es básicamente un mini repositorio independiente a la rama principal (tronco) de nuestro repositorio.

A la rama principal de un Repositorio también se le conoce como Máster.

La ventaja de trabajar con branches es que podemos desarrollar nuevas funcionalidades sin afectar en ningún momento a Máster. Es una forma más organizada de trabajar que te permitirá proteger anteriores versiones de tu app.

Vamos a continuar con nuestro proyecto, creando una rama nueva, para que veas como deberías hacerlo en la práctica.

Primero debes hacer click en el botón del Source Control Navigator situado en la esquina superior izquierda y expandir la flecha principal y la carpeta Branches:

 

git branches folder

 

Como ves, dentro de la carpeta Branches, tenemos nuestra rama master.

Haz click con el botón derecho sobre master y selecciona la opción Branch from “master”

 

git branch from master

 

 

Ahora dale un nombre a esa rama y pulsa Create. Yo lo voy a llamar date, ya que lo que haré será añadir una función que muestre por pantalla la fecha actual.

 

git naming new branch

 

Una vez creada nuestra nueva rama, está aparecerá dentro de la carpeta Branches. Además a su lado, puedes ver que está marcada como (current).

 

git current branch

 

Esto se debe a que ahora mismo nos encontramos en la rama date. ¿Qué quiere decir esto? Hemos dicho antes, que al crear una nueva rama, dividimos el desarrollo en 2 caminos diferentes: La rama master y la rama date.

Git en todo momento sabe en qué rama nos encontramos, ya que si nosotros hacemos commit, debe saber en qué rama tiene que guardar los cambios.

Por este motivo, está marcando la rama date con current, porque ahora mismo nos encontramos en ella.

 

Cada vez que creas una rama nueva, Git te sitúa en esa rama

 

Añadamos entonces a nuestra clase ViewController.swift las siguientes líneas de código, justo a continuación de la linea que añadimos antes:

Ahora, vuelve a hacer click en el menú Source Control y selecciona Commit… para mostrar la ventana de commit.

Si te fijas, en la parte inferior, justo debajo del código, aparece la rama en la que vamos a hacer commit:

 

git new commit in branch

 

Escribe un mensaje para el commit y pulsa Commit 1 File.

Hemos guardado los cambios de nuestra rama date y hemos terminado esta nueva funcionalidad de nuestra app.

Es decir, hemos terminado nuestra nueva feature, hemos comprobado que funciona correctamente y vamos a fusionar la rama date con la rama master. De esta forma, conseguiríamos una versión 0.2 de nuestra App.

Para ello haz click en el botón del Source Control Navigator y dentro de la carpeta Branches, haz click con el botón derecho sobre master, verás que aparecen un menú flotante con algunas opciones:

 

Git master branch options

 

Vamos a explicar tres de esas opciones:

  • CHECKOUT:

Sirve para cambiar de rama. ¿Recuerdas antes cuando te he hablado de la marca (current)? Te expliqué que cuando creas una nueva rama, Git te sitúa en dicha rama.

Con checkout puedes cambiar de una rama a otra. De esta forma, podrías continuar añadiendo nuevas funcionalidades en la rama “date“, después cambiar a la rama “master” haciendo checkout y continuar trabajando en nuevas funcionalidades en “master“.

 

  • MERGE “MASTER” INTO “DATE”:

Merge nos permite fusionar dos ramas. En este caso, fusionar “master” en “date” lo que haría sería coger todo el código de “master” y ponerlo en “date”. No es lo que queremos. Generalmente no es buena idea fusionar “master” con otra rama.

 

  • MERGE “DATE” INTO “MASTER”:

Aquí lo que haríamos sería fusionar “date” en “master”. Es decir, coger todo el código contenido en “date” y pasarlo a “master”. Esto sí es lo que queremos hacer y es como normalmente se trabaja. Cuando se termina de desarrollar una funcionalidad en una rama secundaria, se fusiona dicha rama con “master” y una vez que se ha hecho el merge, se elimina la rama secundaria.

Por tanto, debes hacer click en la opción Merge “date” into “master”.

 

git merge branches

 

Xcode te pedirá confirmación. Haz click en Merge para fusionar las ramas y vuelve a confirmar pulsando en Merge.

Como puedes ver en el log, hemos fusionado la rama date con master y ahora todo el contenido de nuestra app se encuentra en la rama principal:

 

git log merge branches

 

Enhorabuena, acabas de ver el proceso completo de desarrollo de una nueva funcionalidad, utilizando ramas en Git.

Si quieres, puedes eliminar la rama date, haciendo click con el botón derecho sobre ella y pulsando en Delete…

 

4. Conectando con GitHub

 

Nuestro siguiente paso será utilizar GitHub para alojar nuestro repositorio.

Para poder continuar necesitas tener una cuenta en GitHub.

Si no la tienes, debes crearla ahora desde aquí (https://github.com)

 

git github page

 

Si no tienes cuenta en GitHub y quieres dedicarte de forma profesional al Desarrollo de Aplicaciones, no esperes más tiempo y crea tu cuenta ahora. En muchos procesos de selección las empresas te pedirán echar un vistazo a tu perfil de GitHub antes de pensar en contratarte

 

En el momento en que tengas cuenta en GitHub lo siguiente que tendrás que hacer será enlazarla desde Xcode.

Para ello, haz click en el menú Xcode > Preferences… y dentro del menú Accounts, pulsa en el botón situado en la esquina superior izquierda: +. Elige GitHub, introduce tu email y contraseña y pulsa en Sign In.

git binding github account with xcode

Ahora, vamos a crear el repositorio en GitHub para nuestro proyecto. Estando en el Source Control Navigator, haz click con el botón derecho sobre el nombre del proyecto y selecciona Create “GitExample” Remote on GitHub…

 

git create remote repository

 

En la siguiente ventana, escribe una descripción para el repositorio, selecciona la opción Public y pulsa en Create:

 

git repository description

 

De esta forma tan sencilla acabas de subir el repositorio del proyecto a tu cuenta de GitHub. Si vas a github.com verás que en tu cuenta tienes un nuevo repositorio con el código que hemos ido modificando en este Tutorial. Podrás ver la descripción del proyecto, los commits que has hecho y los ficheros que forman el proyecto.

¡Todo hecho directamente desde Xcode!

 

5. Subiendo cambios a GitHub

 

Ahora que ya hemos subido nuestro repositorio a GitHub, lo siguiente que debes saber es como subir cambios a dicha plataforma.

Para subir cambios a un repositorio remoto, en git se utiliza el comando push.

Vamos a repetir el mismo procedimiento. Realizaremos algún cambio en nuestro código, haremos commit y veremos como subir ese commit a GitHub. ¡Vamos a ello!

Añade la siguiente linea al final de la función viewDidLoad():

Ahora, haremos commit para guardar ese cambio en nuestro repositorio local.

Haz click en el menú Source Control y después en Commit…

 

git new commit

 

Introduce un mensaje de commit y pulsa en el botón Commit 1 File para confirmar.

Nuestro siguiente paso será subir este commit a GitHub.

Para ello haz click de nuevo en el menú Source Control pero está vez selecciona la opción Push…

 

git pushing changes to github

 

Tendrás que confirmar esta acción haciendo click en el botón Push.

 

git confirm push

 

Cuando el push se haya realizado correctamente, Xcode te avisará con un mensaje en pantalla.

Ahora puedes comprobar que todo se ha llevado a cabo sin problemas, accediendo a tu cuenta de GitHub y comprobando como el repositorio ha recibido el último commit con los cambios:

 

git github las commit

 

De esta forma tan sencilla podrás subir cambios a GitHub desde Xcode siempre que quieras.

 

6. Bajando cambios de GitHub

 

Otra acción básica que debes dominar, es la de bajar cambios de GitHub.

Si estás trabajando en un equipo de desarrollo, el proceso normal será parecido a este:

  • Realizas cambios en el código del proyecto.
  • Guardas esos cambios (Commit)
  • Subes ese commit a GitHub (Push)
  • Tus compañeros descargan los cambios que has subido (Pull)
  • Tus compañeros hacen cambios en el código del proyecto.
  • Guardan esos cambios (Commit)
  • Suben ese commit a GitHub (Push)
  • Descargas los cambios de tus compañeros (Pull)
  • Realizas cambios en el código del proyecto
  • etc, etc

Como ves, prácticamente hemos visto como hacer todo, excepto la parte de bajar cambios de GitHub.

Para bajar cambios de un repositorio remoto, en git se utiliza el comando pull.

Como este es un Proyecto de ejemplo, no hay ningún desarrollador aparte de mi que pueda realizar cambios en el proyecto para que yo pueda descargarlos de GitHub.

Así que lo que vamos a hacer es crear un fichero en nuestro repositorio directamente desde GitHub para poder descargarlo a nuestro proyecto en Xcode. De esta forma simularemos que es un cambio realizado por otro desarrollador y que ha sido subido directamente a GitHub.

Accede entonces a tu cuenta en GitHub y entra al repositorio que has creado siguiendo este Tutorial.

Pulsa en el botón Create new file:

 

git new file on github

 

Llámalo prueba.txt y escribe lo que quieras en él. Con una linea es suficiente.

 

git creating new file

 

En la parte inferior, escribe el mensaje de commit que quieras y pulsa en el botón Commit new file.

 

git adding commit message to new file

 

De esta forma acabamos de hacer cambios en el repositorio remoto alojado en GitHub y ahora procedemos a bajar esos cambios a nuestro repositorio local directamente desde Xcode.

Ya en Xcode, haz click en el menú Source Control y luego en Pull… 

 

git pull from GitHub

 

Confirma haciendo click en el botón Pull que aparecerá en pantalla.

Xcode te avisará que se ha realizado Pull correctamente con un mensaje en pantalla.

Una vez hecho esto, el fichero prueba.txt debería formar parte de nuestro proyecto en Xcode. Sin embargo, no aparece por ningún lado, ¿no?

Lo que debes hacer es utilizar Finder para abrir la carpeta donde has guardado tu Proyecto y verás como en dicha carpeta está el fichero prueba.txt.

git file pulled from GitHub

No aparece en Xcode simplemente porque no lo hemos enlazado desde ahí. Si quieres que aparezca en Xcode, simplemente tienes que arrastrarlo desde Finder hasta el Inspector del Proyecto en Xcode.

Como ves, a través de Xcode hemos descargado de forma sencilla los cambios de nuestro proyecto alojado en GitHub.

 

7. Resumen Final

 

Espero que este Tutorial sobre Git desde Xcode, formado por 3 partes diferentes te haya servido para entender este Sistema de Control de Versiones. Ojalá te haya podido convencer para que no inicies ningún proyecto de Desarrollo sin utilizarlo. Estoy seguro que en muy poco tiempo te preguntarás como habías podido trabajar sin él.

Aquí tienes un resumen de los puntos más importantes que hemos visto en este Tutorial:

  1. ¿Qué es y cómo funciona un Sistema de Control de Versiones?
  2. Ventajas de los VCS
  3. Tipos de VCS
  4. ¿Qué es y cómo funciona Git?
  5. Ejemplo de funcionamiento de Git
  6. ¿Qué es GitHub y por qué debes crearte una cuenta ya?
  7. ¿Cómo crear un repositorio git?
  8. ¿Cómo hacer commit directamente desde Xcode?
  9. Creando ramas en Git
  10. Conexión a un repositorio remoto alojado en GitHub
  11. Enviando cambios a ese repositorio remoto
  12. Recuperando cambios del repositorio remoto

 

8. Has terminado el Tutorial

 

Has terminado la última parte de este Tutorial. Como siempre, aquí tienes tu recompensa en forma de video:

 

9. ¿Donde ir ahora?

 

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:
1Comentario
  • Jairo Henriquez
    Publicado a las 02:49h, 23 mayo Responder

    Gracias, no tenía idea de esta funcionalidad, aunque estoy iniciando en el campo de desarrollo de apps de iOS, me gustó mucho el tutoríal, sencillo, claro y fácil de seguir. Estaré atento a nuevos tutoriales. Saludos desde Costa Rica.

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.