A lo largo de este artículo voy a explicar qué es GIT y cuales son los principales comandos GIT utilizados por este DVCS.
De lejos, el sistema de control de versiones más utilizado en el mundo actualmente es GIT.
GIT es un proyecto de código abierto, mantenido de forma activa, desarrollado originalmente en 2005 por Linus Torvalds, el famoso creador del kernel del sistema operativo Linux.
En lugar de tener un solo lugar para el historial de versiones completo de un software, en GIT, cada copia de trabajo del código del desarrollador también es un repositorio en el cual se puede encontrar el historial completo de todos los cambios.
Además de ser distribuido, GIT ha sido diseñado teniendo en cuenta el rendimiento, la seguridad y la flexibilidad.
Puedes ver una serie de buenas prácticas sobre el uso de GIT en este artículo.
Si bien existen interfaces GUI (como GitGUI) disponibles para GIT, la familiaridad con al menos los comandos GIT básicos de la interfaz de la línea de comandos de git (GitBash en Windows) sirve para mejorar la capacidad para utilizar la herramienta con la máxima eficacia.
A continuación, explicaré el conjunto básico de comandos GIT más utilizados para navegar y mantener de manera efectiva el repositorio utilizando solo la interfaz de línea de comandos de Git Bash.
Comandos GIT para configurar GIT y crear repositorios
Después de instalar Git en su equipo, lo primero que debe hacer es configurar un repositorio. Un repositorio (repo) es una carpeta ubicada centralmente para almacenar todo su código. Una vez que cree un repositorio Git con sus archivos y directorios, puede comenzar a rastrear cambios y versiones.
Para configurar GIT y crear repositorios existen los siguientes comandos:
Git config
El comando git config sirve para definir valores de configuración de Git a nivel de un proyecto global o local. Estos niveles de configuración se corresponden con archivos de texto con extensión .gitconfig.
Git init
Este comando inicializa un nuevo repositorio en el repositorio local.
Git clone
Este comando inicializa un nuevo repositorio en el repositorio local clonando íntegramente el contenido de un repositorio remoto que le indiquemos mediante una URL.
Comandos GIT manejo de archivos y cambios
Es necesario saber cómo guardar los cambios (en GitHub) de los archivos que creemos, modifiquemos y borremos en nuestro repositorio local.
Es importante tener en cuenta que Git no guarda automáticamente todos los cambios que se realicen. Debe indicar a Git qué cambios desea que se registren añadiendo al área staging area de esos cambios.
Después de añadirlos al área staging area, puede confirmar (commit) los cambios para que se registren en el repositorio local y de ahí, posteriormente, pasarlos al repositorio remoto (GitHub).
Los comandos utilizados para el manejo de archivos y cambios son:
Git add
Una vez que hemos realizado los cambios necesarios en nuestra área de trabajo (working area), para comenzar la confirmación de dichos cambios, es necesario pasar todos los archivos que queramos confirmar al área de preparación (staging area).
Git commit
Una vez que tenemos archivos preparados en el área de preparación, para confirmar dichos archivos y crear una confirmación de cambios la sentencia utilizada es git commit.
Git log
Cada vez que confirmamos cambios (Hacemos un git commit), se crea una confirmación con un número hash identificativo. Dicho número hash determina cada confirmación realizada y será importante para futuras operaciones.
El comando para ver todas las confirmaciones realizadas en nuestro repositorio es Git log.
Git diff
Este comando permite ver las diferencias que existen entre las confirmaciones que determinemos. Se hace referenciando las confirmaciones mediante su número hash.
También se puede utilizar git diff con la palabra HEAD. HEAD hace referencia al commit que tenemos guardado en nuestro repositorio local.
Git reset
Puede descartar confirmaciones que ya no necesita usar utilizando el comando git reset. Hay que tener mucho cuidado con este comando ya que es destructivo y por tanto borrará todos los cambios realizados en el commit que le indiquemos.
Git revert
Puede utilizar dicho comando para deshacer de forma segura una confirmación que ya se haya enviado.
Git tag
Una etiqueta Git (tag) se utiliza para etiquetar y marcar una confirmación específica en el historial. Las etiquetas se usan comúnmente para indicar versiones de lanzamiento (release), con el nombre de la versión (por ejemplo, v1.0) que es el nombre de la etiqueta.
Comandos GIT para manejo de repositorios remotos
La parte más interesante de GIT es la posibilidad de trabajar con repositorios remotos (como GitHub) para poder llevar a cabo proyectos grandes gracias a un equipo de desarrollo.
Los comandos GIT más utilizados para ello son:
Git remote
Para conectar al repositorio remoto con el cual nos comunicaremos entre nuestro repositorio local y dicho repositorio remoto el comando utilizado es git remote.
Git Branch
Las ramas es uno de los conceptos más interesantes dentro de GIT. Permite el trabajo en paralelo sobre distintas partes del código base para añadir funcionalidades, corregir errores o realizar versiones de nuestros proyectos.
La rama principal de un repositorio es la rama master, la cual sirve para, cuando se realicen todos los cambios necesarios en el área de trabajo, confirmar una nueva versión y poder sincronizarla con el repositorio remoto.
Para listar una rama, el comando utilizado es git branch. Si se desea crear una nueva rama hay que especificar un nombre para dicha rama nueva.
Git checkout
Para moverse entre las ramas creadas y realizar los cambios necesarios sobre dichas ramas, el comando utilizado es git checkout.
Para cambiar de la rama actual a la rama que indiquemos, el comando sería:
Git status
Podemos comprobar en cualquier momento el estado de la rama en la que nos encontramos para comprobar si existen archivos (o directorios) que tienen cambios que deben de ser confirmados o rechazados.
Git merge
Una vez que se han realizado los cambios necesarios en la rama creada, se debe de combinar con la rama “superior” para que se unan los cambios entre ambas ramas y la rama superior “apunte” a la confirmación más actualizada del proyecto.
Existen dos comandos en Git para realizar estas combinaciones, git merge y git rebase.
Si se desea conservar todos los cambios e historiales de la rama combinada, el comando a utilizar sería git merge que realiza una fusión entre las ramas seleccionadas.
Git rebase
Si se desea mantener un historial de revisiones limpio el comando a utilizar para combinar las ramas sería git rebase. Este comando reorganiza las ramas y crea una única revisión de dicha combinación de ramas.
Git push
Una vez que ya hemos realizado todos los cambios necesarios, hemos combinado todas nuestras ramas (o las deseadas) y tenemos dichos cambios confirmados en la rama maestra (master) se puede llevar a cabo la sincronización del contenido de nuestro repositorio local con el repositorio remoto.
Para enviar todos los cambios que tenemos en nuestro repositorio local al repositorio remoto, el comando a utilizar sería git push.
Git pull
Para extraer todos los cambios del repositorio remoto en nuestro repositorio local y poder tener así la última confirmación de dicho repositorio, el comando a utilizar es git pull.
GIT, una solución ideal para gestionar tus proyectos de software
GIT está pensado para todo tipo de proyectos, desde un proyecto individual hasta un proyecto enorme de una gran empresa.
Los comandos GIT aquí explicados no son, de ninguna manera, todos los disponibles. Se han incluido los comandos básicos necesarios para comenzar a usarlo, y las opciones de uso común para cada comando.
Existe una gran cantidad de información adicional disponible en Internet. Puedes consultar todos los comandos disponibles en la página oficial de GIT.
Si estás interesado en profundizar en el manejo de GIT te recomiendo el Curso Superior en DevOps o los siguientes máster: Master en Gestión y Desarrollo de Aplicaciones Multiplataforma (DAM) o Master DevOps y Cloud Computing.
Si te ha gustado el artículo y quieres ver otros escritos por mí, puedes entrar a mi perfil.