Control de versiones de Git en la línea de comandos para desarrolladores de iOS

Nos ha sucedido a todos: cambiamos algo en nuestro código y, de repente, todo parece estar "roto". Esto es cuando el control de versiones es una bendición, si sabes cómo usarlo. En este tutorial, aprenderemos a usar Git desde la línea de comandos.

Xcode y otros IDE modernos tienen opciones básicas para Git integradas en su interfaz gráfica de usuario, pero solo obtienes un control de alto nivel de tu repositorio (repositorio Git) a través de la línea de comandos. Si está realizando la codificación avanzada o la administración de Git, es importante sentirse cómodo con la línea de comandos. Si nunca ha usado la línea de comando antes, le gustaría ver mi otro tutorial sobre el tema:

Acerca del control de versiones

Antes de comenzar, debemos revisar qué es exactamente el control de versiones. UNA Sistema de control de versiones es una solución de software que puede guardar fácilmente revisiones de su código y otros datos para que pueda volver a las versiones anteriores, revisar los cambios realizados y compartir actualizaciones con los colaboradores.. 

Hay muchas ventajas y casos de uso para el control de versiones. Por ejemplo, revisando los cambios ("cometer") a su proyecto, puede identificar quién escribió un fragmento de código en particular y por qué. También puede revertir cualquier cambio que se haya encontrado erróneo o que rompa la funcionalidad..

El sistema de control de versiones más utilizado hoy en día es Git, así que este es el que veremos en esta publicación. Tenga en cuenta que hay otros sistemas ampliamente utilizados, aunque, por ejemplo, SVN y Mercurial. 

Términos y conceptos clave

  • repositorio o repo-contiene todo el código para un solo proyecto, junto con el historial de cambios completo de cada archivo.
  • directorio de trabajo-Cuando edita su código, está haciendo cambios en su directorio de trabajo. Si desea guardar estos cambios en el repositorio, deberá realizar una cometer. Si todos los cambios en el directorio de trabajo se han confirmado en el repositorio, el directorio de trabajo es limpiar.
  • cometer-un grupo de cambios a los archivos de origen. Por lo general, estos cambios se agrupan para que cada confirmación pertenezca a una única corrección de errores o característica..
  • rama-El trabajo en un proyecto se puede organizar en ramas. Esto permite que un desarrollador o grupo de desarrolladores trabaje en una función, mientras que otro desarrollador trabaje en otra función. 
  • unir-Aporta los cambios en dos ramas juntas. A menudo, esto puede hacerse automáticamente por Git, pero si hay conflictos, es posible que tengas que decirle a Git manualmente cómo fusionar los archivos.

Servicios de gestión de repositorios

Cuando usas control de versiones, creas un repositorio, o repo, y es más común alojar este repositorio en una Servicio de gestión de repositorios. Para los fines de este tutorial, no alojaremos nuestro repositorio en ningún lugar, por lo que puede concentrarse en usar realmente el control de versiones. Sin embargo, si lo desea, puede leer sobre estos servicios de administración de repositorios, y debería poder aplicarles este conocimiento si lo desea.. 

Algunos ejemplos de estos son GitHub, Bitbucket, GitLab y Coding, y son ampliamente utilizados por los desarrolladores de todo el mundo. Yo, y muchos otros, utilizamos GitHub porque alberga una gran cantidad de proyectos de código abierto. Los repositorios de GitHub son públicos de forma predeterminada, pero puede crear repositorios privados por una tarifa mensual.

Empezando

Creando una Aplicación

Para empezar, deberás crear una nueva aplicación en Xcode. Para esta aplicación, puede usar cualquier plantilla que desee, y si tiene una aplicación actual que tenga un repositorio Git, también puede usarla para este tutorial..

Así es como debe verse el IDE justo antes de que finalmente cree su proyecto (cuando necesita decidir la ubicación para almacenar el proyecto):

Asegúrese de que la caja que dice Crear repositorio Git en mi Mac está marcado, ya que esto asegurará que su proyecto tendrá internamente el repositorio. Más adelante, si elige usar un sistema de administración de repositorio, podrá empujar todo este código, y cada cometer alguna vez has hecho aparecerá.

Abriendo la terminal

Para llegar a la línea de comandos, deberá abrir la Terminal. Puedes hacer esto de una de dos maneras. Tu puedes abrir Plataforma de lanzamiento, y allí puedes encontrar el Terminal icono en el Otro Carpeta en la primera página de Launchpad. O puedes golpear Espacio de comando en tu teclado y busca Terminal en Destacar.

Una vez que abra la terminal, debería ver algo como lo siguiente.

Esto se denomina "indicador de comando": verá el directorio actual, luego su nombre de usuario seguido de una PS.

¡Todo bien! Ahora está listo para aprender cómo usar el control de versiones en la Terminal.

Hoja de trucos de comandos de terminal

Estos son algunos de los comandos básicos que escribí en mi tutorial sobre cómo comenzar con Terminal. Tendrá que saber esto para utilizar el terminal de manera efectiva.. 

Ayuda

  • ayuda-como su nombre indica, puede escribir este comando en la Terminal para obtener una lista de diferentes comandos.
  • hombre -similar al comando anterior, este comando le dice exactamente lo que hace un comando (y le brinda documentación completa) sin que tenga que buscarlo en Google.

Gestión de archivos

  • ls-Enumera todos los contenidos en el directorio actual. Este comando es útil si no desea utilizar el Buscador para buscar archivos; simplemente puede enumerarlos con este comando en su Terminal.
  • discos compactos -Este comando se utiliza para cambiar directorios. Si tú escribes discos compactos solo, saldrá del directorio actual. Después de usar ls (para ver los directorios), puede escribir el nombre del directorio que desea ingresar.

Cambio de preferencias

  • por defecto -este comando se usa para modificar la configuración predeterminada del sistema, algunos de los cuales no se pueden cambiar sin usar el terminal.
  • cafeína-como su nombre indica, este comando se usa para evitar que su Mac se atenúe, apague o duerma. Para terminar esto, todo lo que necesitas hacer es presionar Control-C.

Edicion de texto

  • empuje -Este es uno de mis favoritos. Puede editar archivos de texto utilizando el TextEdit predeterminado (o cualquier editor basado en GUI), pero empuje es básicamente un editor de texto de línea de comandos, es decir, funciona completamente dentro del terminal.

Redes

  • silbido -este comando le permite verificar el tiempo de respuesta del servidor de una URL o dirección IP específica. Esto puede no ser útil para todos los desarrolladores, pero es bueno saberlo.

Administración

  • sudo -una forma de anular los privilegios de su usuario y convertirse en un superusuario de la computadora. Se le pedirá una contraseña de administrador cuando la use.

Comandos de Git diferentes

Ahora que has visto algunos comandos de terminal básicos, aprendamos sobre las diferentes cosas que puedes hacer con Git. No los cubriré todos, pero les enseñaré los principales que utilizará en el desarrollo del día a día. Si alguna vez necesita más información, simplemente puede ejecutar git ayuda en su terminal para obtener detalles, y si eso no es suficiente, para obtener toda la documentación, puede ejecutar hombre git para obtener la pagina de manual.

Así es como se ven las páginas de ayuda:

Creando un Proyecto

  • git clone enlace-repo remoto-Si desea clonar un repositorio desde un servicio de administración de repositorios, puede usar este comando junto con la URL para obtener una copia local en su computadora.
  • git init-Si está creando un nuevo repositorio desde una carpeta existente, puede usar este comando. Se inicializará la carpeta actual para ser un nuevo repositorio. Por lo general, harías esto cuando creas un proyecto por primera vez..

Cometiendo cambios

  • estado de git-le dice qué archivos en su directorio de trabajo han sido cambiados. Si ha cambiado los archivos, puede ser el momento de hacer un compromiso!
  • git commit -am "mensaje de confirmación útil"-cuando haya realizado algunos cambios en su proyecto (por ejemplo, cuando haya completado una función simple o haya realizado una corrección de errores), debe confirmar el cambio. Asegúrese de proporcionar un mensaje de compromiso claro y conciso, ya que esto ayudará a otros desarrolladores a comprender lo que ha hecho y por qué..
  • git añadir nombre de archivo o git agregar --todos-Si agrega un nuevo archivo a su repositorio, tendrá que agregarlo al repositorio antes de confirmarlo. Utilizar el añadir mando. 

Sucursales de Repositorio

  • rama de git nombre de la rama?-con este comando, puede listar las ramas actuales o crear una nueva.
  • git merge nombre de rama-fusionar la rama actual con la rama indicada. Esto combinará el código en la rama actual con el nombrado.
  • git checkout nombre de sucursal-cambiar a la rama indicada. Esto simplemente dejará de lado la rama actual y activará la otra rama..

Sistemas de gestión de repositorios

  • git push-actualiza el repositorio en el sistema de gestión de repositorio. Una vez que haya terminado de realizar cambios y esté seguro de que su código funciona bien, puede empujar su código para que otros miembros puedan verlo y extraerlo..
  • git pull-actualiza su copia de trabajo local del repositorio para reflejar las últimas actualizaciones que se han enviado al sistema de administración del repositorio. Es una buena idea hacer esto antes de hacer cualquier cambio si está trabajando en un equipo..

Estos son algunos de los comandos principales que utilizará en el control de versiones para comenzar, pero antes de finalizar este tutorial, veamos algunos de estos en profundidad con el proyecto Xcode que creamos anteriormente..

Ejemplo de uso de Git con un proyecto de Xcode

Ahora, veamos algunos ejemplos de cómo usar Git en la línea de comandos con el proyecto Xcode que creamos anteriormente en este tutorial. Tenga en cuenta que usaremos los comandos de terminal anteriores, así que asegúrese de seguir refiriéndose a ellos o memorícelos.

Navegando al Directorio de Proyectos

Antes de comenzar, deberá navegar al directorio del proyecto usando los comandos que se mencionaron anteriormente (sugerencia: use la discos compactos y ls comandos). Una vez que estés allí, corre ls y asegúrate de que tienes algo como esto:

¡Ta-da! Ahora está en el directorio de su proyecto y listo para hacer todo lo que necesite con su proyecto. Simplemente siga adelante mientras nos comprometemos y ramificamos..

Cometer

Cometer su código es lo que hará con más frecuencia en la programación. Tan pronto como realice un cambio de trabajo, la mejor práctica es realizarlo junto con comentarios detallados..

Haciendo un cambio

Para empezar, haz un cambio en el proyecto Xcode. Para el mío, solo agregaré la siguiente línea de código ficticio en mi viewDidLoad () método:

deja foobar = "foo"

Obtener el estado

Una vez que haya terminado de agregar (o restar) una o dos líneas de código, estará listo para verificar el estado de su proyecto. Para hacer esto, pega el siguiente comando (menos el PS en la ventana de su Terminal:

estado de $ git

Verás algo como esto:

El archivo que ha modificado está resaltado en rojo, lo que le indica que tiene cambios no confirmados.

Agregar archivos al área de ensayo

Si solo desea confirmar ciertos archivos, puede hacerlo usando un "área de preparación" donde solo se confirmarán esos archivos. Para agregar todos los archivos modificados al "área de preparación", todo lo que necesita hacer es ejecutar la siguiente línea de código:

$ git add -A

los -UNA El indicador que ve significa que todos los archivos que ha modificado se agregarán (-UNA Es para todos, y también puedes escribir. git agregar --todos). 

Para ver que sus archivos están listos para comprometerse, simplemente ejecute lo siguiente nuevamente:

estado de $ git

Verás algo como esto:

¿Ver? El mismo archivo que estaba en rojo ahora es verde, lo que indica que lo ha preparado correctamente para cometer. 

Cometer su código

Finalmente, para finalmente confirmar su código, todo lo que debe hacer es ejecutar el siguiente comando en su terminal, y entre las comillas, agregue un mensaje.

$ git commit -m "Mi primer commit".

los -metro La bandera le dice a la Terminal que agregará un mensaje a su archivo, y es muy importante que quede claro con este mensaje. Estos mensajes son cruciales para realizar un seguimiento de los cambios en su proyecto..

Ahora, has hecho tu primer compromiso! Está en el camino correcto para hacer que su código sea más fácil y más seguro.

Ramas

La segunda cosa más común que harás como desarrollador es crear, combinar y usar sucursales para ordenar tu código y aislar las características antes de distribuirlas a los clientes..

Creando una nueva rama

Por defecto, estás en lo que llamamos la rama "maestra". Esa es la rama principal en la que, eventualmente, todo debería aparecer. La mejor práctica, especialmente trabajar con un equipo, es trabajar en las nuevas características principales de sus propias sucursales, que se fusionarán de nuevo con el maestro cuando se complete.

Para practicar el trabajo con ramas, vamos a crear una nueva rama. Para hacer esto, ejecute el siguiente comando:

$ git branch my-first-branch

Puedes nombrar la rama como quieras. 

Para ver la nueva rama, puede escribir:

rama de $ git

Cuando ejecute ese comando, verá algo como esto:

Observa que puedes ver dos ramas: dominarmi primera rama (o como se llame tu rama). Además, verás que hay un asterisco junto a la dominar rama, lo que indica que estás actualmente en esa rama.

Revisando una rama actual

Si alguna vez necesita cambiar a otra sucursal existente, deberá revisa esa rama Cuando haga esto, dejará la rama actual y todo su código permanecerá intacto (junto con sus cambios locales), pero su directorio de trabajo se rellenará con el código de la rama que verificó.

Pruébalo con el siguiente comando:

$ git checkout my-first-branch

Deberías obtener una confirmación que se parece a esto:

Ahora, estás cambiado a esta rama, y ​​debería ser una pizarra limpia. Para confirmar esto, ejecute estado de git para comprobar si hay archivos modificados. 

Fusionando Ramas

Una vez que haya terminado de realizar cambios, normalmente fusionaría la rama con la rama maestra. Todavía no hemos hecho ningún cambio, así que hagamos eso ahora antes de fusionar las dos ramas.

Haz otro cambio al proyecto Xcode. Para el mío, solo agregaré la siguiente línea de código ficticio en mi viewDidLoad () método:

let gooey = "fooey"

Puedes hacer cualquier cambio que quieras. Solo asegúrate de saber qué archivo y qué cambios hiciste.

Una vez hecho esto, ejecute la siguiente línea de código de nuevo:

estado de $ git

Ahora, debería ver el nombre del archivo en rojo, y deberá confirmar antes de fusionar este cambio con su rama principal. Confío en que sepa cómo hacerlo, así que avancemos al siguiente paso. Verifique que el compromiso fue exitoso con estado de git.

A estas alturas, ya debería haber confirmado el código, así que preparémonos para fusionar las dos ramas. Primero, ejecute el siguiente comando:

$ git checkout master

Este comando cambia a la dominar rama para preparar para fusionarse con la otra rama que hemos creado. Finalmente, para fusionar, ejecute el siguiente comando:

$ git merge my-first-branch

Deberías obtener una confirmación que se ve así:

Ahora sus cambios de la rama de características se han fusionado de nuevo en maestro. Si la rama maestra ha cambiado desde que se creó la rama, Git intentará combinar automáticamente los cambios de sus funciones con la maestra. Si no puede hacerlo automáticamente, le pedirá que resuelva manualmente cualquier conflicto..

Ahora ya sabe cómo fusionar ramas, crearlas y alternar entre ellas utilizando solo la Terminal!

Conclusión

Como ve, no es demasiado difícil hacer el control de versiones con su proyecto, y las recompensas bien valen la pena. El control de versiones es una de las mejores prácticas de desarrollo, y debe estar familiarizado con él si desea trabajar en un contexto profesional.. 

Espero que esta publicación le haya dado la confianza de utilizar el control de versiones a diario. Si desea obtener más información sobre Git, consulte algunos de nuestros videos instructivos animados aquí en Envato Tuts+.