En este tutorial vamos a aprender sobre Git. Un gestor de versiones muy popular tanto en startups como en grandes empresas, usado por miles de programadores en todo el mundo. Creado por Linus Torvalds (el creador del Kernel Linux) y desde 2009 mantenido por Junio Hamano. Fue lanzado en Abril de 2005 como un sistema de control de versiones distribuidas de código abierto, diseñado para manejar proyectos pequeños o muy grandes con rapidez y eficiencia.
Antes de continuar y a favor de que este tutorial realmente cumpla su objetivo te hacemos una sugerencia: si no estás familiarizado / da con los temas que aquí abordaremos te recomendamos conocer un poco más sobre:
¿Qué es un sistemas de control de versiones?
en este artículo que te recomendamos (también nuestro) abordamos varios temas que creemos fundamentales conocer antes de adentrarse en el artículo actual. Hablamos un poco sobre la historia de los sistemas de control de versiones, la necesidad que motivó su existencia o lo que sería lo mismo: su función dentro de nuestros proyectos.
¿Por qué aprender Git?
Durante estos años Git se ha impuesto sobre su competencia (Subversion, CVS, Perforce y ClearCase) y esto ha sido producto de ciertas características técnicas que veremos a continuación pero también a su facilidad de uso. Git es multiplataforma, por lo que puedes usarlo y crear repositorios locales en todos los sistemas operativos más comunes: Mac, Windows o Linux. Otro aspecto que lo ha mantenido como la opción a elegir es que en la actualidad existen multitud de GUIs (Graphical User Interface o Interfaz de Usuario Gráfica) para trabajar con Git (como Tower por ejemplo).
Los tres estados de Git
Si quieres que el resto de tu proceso de aprendizaje prosiga sin problemas, lo más importante a recordar acerca de Git son sus tres estados, estos hacen referencia a los tres principales en los que se pueden encontrar los archivos de nuestro proyecto: modificado (modified), preparado (staged) y confirmado (committed).
Cuando estás trabajando en tu proyecto, vas modificando archivos (cada vez que modificas uno de ellos pasa al estado modificado). Cuando consideras que uno de los archivos modificados ya está terminado, llega el momento de comunicárselo al sistema de control de versiones. En ese momento este archivo pasa al estado preparado. Por último, cuando ya tienes todos tus archivos en estado preparado, llega el momento de confirmarlo, pasando a partir de ese momento al estado confirmado.
Dicho esto pudieramos definir estos estados:
- Modificado: Has modificado el archivo pero todavía no lo has confirmado a tu base de datos.
- Preparado: Has marcado un archivo modificado en su versión actual para que vaya en tu próxima confirmación.
- Confirmado: Los datos están almacenados de manera segura en tu base de datos local.
La línea de comandos
Hay muchas formas diferentes de usar Git. Existen las herramientas originales de la línea de comandos e interfaces gráficas de usuario con diferentes capacidades que usan como backend el propio comando git. En nuestros tutoriales usaremos la línea de comandos que es como, a nuestro parecer, se aprende realmente, de modo que puedas interactuar con muchos de sus parámetros en las distintas situaciones y etapas que ya hemos comentado.
Dominar el sistema desde su base es fundamental, es necesario consolidar los parámetros en nuestra mente en lugar de estar aprendiendo a usar un programa gráfico determinado que bajo ciertas circunstancias ya no se sea una opción, momento donde tendríamos que tirar del terminal pero como no tenemos ni idea de los parámetros a usar pues nos veremos imposibilitados de seguir adelante o quizás perder un tiempo, en ocasiones limitado, buscando en Internet como hacer en la terminal lo que estamos acostumbrados a ejecutar mediante la interfaz gráfica.
También es bueno puntualizar que por un lado, la línea de comandos es el único lugar donde se pueden ejecutar todas las variantes del comando git ya que estamos interactuando directamente con él, solamente este tiene soporte para todos: la mayoría de las GUI sólo implementan ciertos subconjunto de funcionalidades más comunes básicamente por simplicidad, por lo que si dominamos la línea de comandos aparte de la libertad que tendremos para enfrentar cualquier situación, seguro también podremos manejarnos con soltura en la versión GUI.
Además, si bien la elección de un cliente gráfico es una cuestión de varios factores técnicos en ocaciones también reside en el gusto personal, mientras que todos los usuarios tendrán siempre en cualquier plataforma la posibilidad de instalar las herramientas de línea de comandos.
Instalación de Git
En las últimas versiones de Ubuntu ya tenemos Git instalado por defecto. Si ejecutamos el siguiente comando:
apt install git
veremos que ya está instalado:
root@ubuntu:/home/weiseratel# apt install git
Reading package lists... Done
Building dependency tree
Reading state information... Done
git is already the newest version (1:2.25.1-1ubuntu3.1).
git set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
pero esta no es la última versión de Git. Si por alguna razón preferimos la versión estable más reciente (opción que recomiendo) primero tendríamos que añadir el siguiente repositorio NO OFICIAL pero recomendado en la propia página de Git (add-apt-repository ppa:git-core/ppa):
add-apt-repository ppa:git-core/ppa
tras este comando ejecutamos:
apt update && apt upgrade
Con esto último actualizamos la base de datos de paquetes del gestor de paquetes apt y actualizamos algún paquete en el caso de estar disponible. Luego de agregar el repositorio anterior los paquetes asociados a Git se deberán actualizar a la última versión estable.
Verificamos la versión con el comando:
root@ubuntu:/home/weiseratel# git --version
git version 2.32.0
root@ubuntu:/home/weiseratel#
Si comparamos la versión actual (v2.32) con la versión que nos mostraba el sistema cuando intentamos instalar Git (v2.25.1) hace un rato, veremos que en efecto hay una diferencia bastante marcada entre ambas versiones.
Configuración inicial y órdenes básicas
Lo primero que tenemos que hacer es aplicar una pequeña configuración básica, una configuración necesaria al inicio y que luego no tendremos que volver a modificar en la mayoría de los casos.
Git trae una herramienta llamada git config que te permite obtener y establecer variables de configuración, que controlan el aspecto y funcionamiento de Git. Estas variables pueden almacenarse en tres sitios distintos:
- Archivo /etc/gitconfig: Contiene valores para todos los usuarios del sistema y todos sus repositorios. Si especificamos la opción –system a git config, lee y escribe específicamente en este archivo.
- Archivo ~/.gitconfig: Específico a tu usuario. Puedes hacer que Git lea y escriba específicamente en este archivo pasando la opción –global.
- Archivo config en el directorio de Git (es decir, .git/config) del repositorio que estés utilizando actualmente: Específico a ese repositorio. Cada nivel sobrescribe los valores del nivel anterior, por lo que los valores de .git/config tienen preferencia sobre los de /etc/gitconfig.
Lo primero que debemos hacer cuando instalamos Git es establecer nuestro nombre de usuario y dirección de correo electrónico. Esto es importante porque las confirmaciones de cambios (commits) en Git usan esta información, y es introducida de manera inmutable en los commits que envías:
git config --global user.name "Paco"
y
git config --global user.email paco@example.com
De nuevo, sólo necesitas hacer esto una vez si especificas la opción –global, ya que Git siempre usará esta información para todo lo que hagas en ese sistema. Si quieres sobrescribir esta información con otro nombre o dirección de correo para proyectos específicos, puedes ejecutar el comando sin la opción –global cuando estés en ese proyecto.
Ahora que tu identidad está configurada, puedes elegir el editor de texto por defecto que se utilizará cuando Git necesite que introduzcas un mensaje. Si no indicas nada, se hace uso del editor por defecto del sistema, que generalmente es vi o vim. Si quieres usar otro editor de texto, como mcedit, puedes hacer lo siguiente:
git config --global core.editor mcedit
Comprobando la configuración
Si quieres comprobar tu configuración, puedes usar el comando git config –list para listar todas las propiedades que se han configurado:
root@ubuntu:/home/weiseratel# git config --list
user.name=Paco
user.email=paco@example.com
core.editor=mcedit
root@ubuntu:/home/weiseratel#
esta salida en pantalla diferirá evidentemente para cada persona o sistema operativo. También puedes comprobar qué valor asociado tiene una clave específica ejecutando git config <clave>:
root@ubuntu:/home/weiseratel# git config user.email
paco@example.com
root@ubuntu:/home/weiseratel#
Obteniendo ayuda
De más está decir que en los comentarios puedes hacer públicas tus dudas con respecto a lo que aquí hemos expuesto pero hay ocasiones donde tenemos pequeñas dudas o error de sintaxis que podemos solventar a través del propio comando Git o de las páginas de documentación del sistema (manpage). Hay tres formas de acceder a estas páginas para cualquier comando de Git:
git help <comando>
git <comando> --help
man git-<comando>
Por ejemplo, puedes ver la página del manual para el comando config ejecutando:
git help config
en esta imagen podemos ver la salida en pantalla del comando anterior.
Llegado este punto ya tendríamos todo configurado y listo para comenzar a usarlo en nuestros proyectos. Pero evidentemente esto no es todo, aún queda mucho por comentar y aprender sobre Git. En un próximo artículo sobre Git veremos las órdenes básicas, aprenderemos a crear un repositorio y a clonar uno ya existente, haremos nuestro primer commit, consultaremos el historial de cambios, los revertiremos y mucho más. En términos general, los comandos más usados y por ende aquellos que tenemos que dominar mejor.
Falta aún mucho por aprender en nuestro camino a convertirnos en iOS Developer. Suscríbete a nuestra lista de correo mediante el formulario en el panel derecho y síguenos en nuestras redes sociales. Mantente así al tanto de todas nuestras publicaciones futuras.
Espero que todo cuanto se ha dicho aquí, de una forma u otra le haya servido de aprendizaje, de referencia, que haya valido su preciado tiempo.
Este artículo, al igual que el resto, será revisado con cierta frecuencia en pos de mantener un contenido de calidad y actualizado.
Cualquier sugerencia, ya sea errores a corregir, información o ejemplos a añadir será, más que bienvenida, necesaria!