Git Básico: Control de versiones

Última actualización: 20/07/2020

En esta entrada voy a explicar qué es el sistema de control de versiones Git, cómo usarlo y aprovechar sus ventajas y sus comandos básicos con detalle.

Git Básico

¿Qué es Git?

Git es uno de los sistemas de control de versiones distribuidos más populares. Fue creado por Linus Torvalds para facilitar el desarrollo del kernel de Linux y no ha dejado de crecer desde entonces. Se trata de software gratuito y open source, distribuido bajo la licencia GPL

Permite a los desarrolladores de software mantener y gestionar los cambios en el código que se producen en el tiempo. Hace posible revertir los cambios y volver a una versión anterior siempre que sea necesario, por ejemplo en el caso de introducir un bug. De esta forma, el desarrollador puede arreglar los errores de una manera más cómoda y práctica.

Además, Git proporciona mecanismos para trabajar sobre el mismo código de forma simultánea evitando los conflictos que puedan surgir. Un programador podría estar trabajando en un módulo del código mientras otro trabaja en otra funcionalidad.

Para conseguir trabajar de forma concurrente, cada desarrollador usa una rama distinta en la que el código evoluciona de forma independiente. Cuando se desean unir los cambios a la rama master o principal puede hacerse fácilmente.

Por último, no tiene por qué usarse solamente con código fuente. El sistema puede realizar un seguimiento de los cambios y de integridad en cualquier fichero, por lo que eres libre de usarlo de la manera que más te convenga.

¿Cómo funciona Git?

Para aprender a usar Git, a continuación vamos a explicar los comandos básicos más utilizados.

Git clone

Este comando nos permite descargarnos a nuestro ordenador una copia de un repositorio de código remoto. Este repositorio puede ser público en internet, como ocurre con numerosos proyectos open source, o bien ser privado. Los servicios que alojan repositorios más conocidos son Github y Bitbucket. En estos, bastaría con copiar la dirección web para usar en el comando

git clone https://github.com/apache/spark

Git checkout

Checkout permite seleccionar la rama sobre la que queremos trabajar. Por defecto, al clonar un proyecto, nos situará en la rama master. Para listar las ramas que existen en el proyecto, podemos usar el comando git branch, que también nos resaltará la rama en la que nos encontramos.

Es recomendable no trabajar sobre la rama master ya que es posible que introduzcas errores en el proyecto en el proceso de desarrollo.

Para seleccionar una rama existente:

git checkout nombre-de-rama

Para crear una nueva rama:

git ckeckout -b nueva-rama

Git pull

Este comando permite descargar los nuevos cambios o commits que existen en el repositorio remoto a tu copia local. Es recomendable usar este comando cada vez que se vaya a trabajar en un proyecto para mantener la copia lo más actualizada posible y disminuir los conflictos.

Git status

Lista el estado de la versión del proyecto, incluye todos los ficheros en los que se ha trabajado pero aún no se han incluido en el commit.

Git add

Nos permite añadir los ficheros que queremos incluir en el commit. Para incluir todos los ficheros con cambios se puede usar el siguiente comando:

git add .

Para incluir solamente un fichero se puede añadir el nombre.

Git commit

Añade un nuevo commit o conjunto de cambios agrupados en el repositorio local. Es necesario añadir un comentario que resuma los cambios. Este commit no se sincroniza automáticamente con el repositorio remoto.

git commit -m "comentario del commit"

Con git amend podemos modificar el mensaje de commit antes de hacer push al repositorio.

Git push

Sincroniza los commits locales con el repositorio remoto. Permite cargar todos nuestros cambios para que compañeros puedan usarlos.

Git Flow

Git Flow es una modelo de trabajo con ramas Git para facilitar y simplificar el desarrollo de software y el control de versiones en equipos con varios desarrolladores.

Este modelo aísla el nuevo trabajo de desarrollo en ramas llamadas feature. El trabajo puede ser en nueva funcionalidad o arreglos de bugs. Estas ramas desaparecerán para unirse a la rama de desarrollo llamada develop cuando el desarrollador esté satisfecho con el código.

En la rama develop se agregan todos los cambios que estén listos pero aún no se hayan publicado en una nueva versión del software. En el momento que se desee publicar una nueva versión, se hace sobre la rama llamada release.

Modelo de ramas de Git Flow
Modelo de ramas de Git Flow

Git vs SVN

Subversion o SVN es otro popular gestor de cambios muy usado en proyectos de software. Es más antiguo que Git y la principal diferencia es que SVN es centralizado.

En Git, cada desarrollador trabaja con una copia local del repositorio que contiene todo el histórico de cambios. Al realizar cambios, no es necesario sincronizarlos continuamente por lo que los comandos pueden ser más rápidos en ejecutar.

Por otro lado, SVN mantiene una copia para el desarrollador de los ficheros con los que está trabajando, manteniendo el resto en un servidor que actúa como repositorio centralizado.

Los repositorios de SVN pueden ser usados directamente con git-svn.

Siguientes pasos y formación

Espero que esta entrada te haya ayudado a aprender los conceptos básicos y perderle el miedo a esta herramienta tan útil para los desarrolladores de software.

Próximamente publicaré más entradas con conceptos más avanzados y trucos para sacarle más partido.

Para seguir aprendiendo puedes hacerte con alguno de los siguientes libros:

O bien el curso Mastering Git and Github

Preguntas Frecuentes Git – FAQ

¿Qué es Git Flow?

Git Flow es una modelo de trabajo con ramas en Git para facilitar y simplificar el desarrollo de software y el control de versiones en equipos con varios desarrolladores.

¿Cuál es la diferencia entre Git y SVN?

La principal diferencia es que SVN es un sistema centralizado, el repositorio se encuentra en un servidor. Git mantiene una copia local del repositorio completo para cada desarrollador, por lo que no es necesaria la sincronización continua.


¡Echa un ojo a mi lista de reproducción de Big Data en Youtube!

Si te ayuda el contenido del blog, por favor considera unirte a la lista de correo para reconocer el trabajo!

Deja una respuesta