¿Qué es Git?

¿Qué es el control de versiones?


Al trabajar como programador, estarás continuamente escribiendo, borrando y haciendo cambios en el código de tu proyecto. En muchas ocasiones (por no decir siempre) necesitarás organizar bien estos cambios de forma que sea muy sencillo, en cualquier situación, descartar los cambios que has hecho recientemente o, cuando vas en la buena dirección, guardarlos.

Además, necesitarás una forma de organizar estos cambios de modo que sea fácil trabajar con uno o varios compañeros de equipo, que a su vez también podrán hacer cambios, sincronizar los cambios que has hecho (y viceversa).

Git: Control de versiones

Si te ha pasado alguna vez esto con carpetas o archivos, con toda certeza, necesitas aprender a utilizar Git, que te ayudará a organizar tus cambios y no tener problemas con las versiones.

¿Qué es git?

Cuando hablamos de git, hablamos de un sistema de control de versiones. Es decir, una forma de gestionar los cambios que realizas en tu código de forma organizada. Con este sistema, puedes guardar cambios, descartarlos, aislar partes para probarlas por separado, y luego fusionarlas, entre muchas otras cosas.

En este apartado de introducción vamos a ver los primeros pasos de instalación y configuración de git, pero antes necesitaremos que conozcas algunos conceptos importantes.

Conceptos

Antes de comenzar, recuerda que git es la herramienta que utilizaremos para gestionar los cambios de nuestro proyecto. Pero podemos estar trabajando con git en varios lugares diferentes, así que expliquemos un poco el esquema general, y luego profundizamos.

En principio, con git podemos estar trabajando en local o en remoto. Trabajar en local se refiere a que estamos haciendo cambios sólo en nuestro sistema. Por otro lado, cuando hablamos de remoto, nos referimos a que hacemos los cambios en un lugar remoto, generalmente algo como GitHub o GitLab, aunque hay muchas más alternativas:

Git: Local vs remote

Observa que cuando trabajamos en local con git, aún así, tenemos también varias divisiones:

  • Working directory: Esta es la estructura de carpetas local donde tenemos nuestro proyecto y donde estamos acostumbrados a trabajar, incluso sin git.

  • Staging area: Esta es un área temporal en el que guardamos los cambios. Siempre que hagamos cambios, se guardarán en esta zona, antes de marcarlos como confirmados.

  • Local repository: Este es el contenido de los cambios confirmados de tu proyecto, guardado en nuestro sistema local.

Estos dos últimos puntos, realmente son una estructura interna de carpetas y archivos definida por git, que se guarda en la carpeta oculta .git/ de nuestro proyecto. Normalmente, nunca accederemos a esta carpeta de forma manual, sino que lo gestionamos a través del comando git, por lo que hay que aprender a utilizarlo.

Repositorio

A lo largo de estos temas, hemos mencionado y hablaremos de un concepto denominado repositorio. Se trata de un lugar de almacenamiento donde se guardan los archivos y carpetas de un proyecto. En ellos, se guarda todo el historial de cambios realizado, permitiendo a sus usuarios, realizar modificaciones y cambios, e incluso revertir y volver a una versión anterior.

Los repositorios pueden ser locales (en nuestra propia máquina) o remotos (en máquinas ajenas). En nuestra máquina local, normalmente, tenemos múltiples repositorios, generalmente uno por cada proyecto diferente. Cada uno de estos repositorios locales suele estar asociado a un repositorio remoto, con la información sincronizada para que sea la misma. Pero de esto último hablaremos más adelante.

En los primeros temas, veremos como realizar cambios en un repositorio local, y más adelante veremos como guardar esos cambios en repositorios remotos.

Software para usar Git

Aunque en este curso estaremos viendo como trabajar con git desde terminal, para entender como funciona el proceso, una vez hemos aprendido, lo conveniente es descargar un programa que nos permita gestionarlo todo de forma visual con un entorno gráfico.

A continuación, algunos de los programas más populares disponibles:

Nombre Plataformas GitHub Modalidad
GitHub Desktop Windows y Mac GitHub Open Source
GitKraken Windows, Mac y Linux GitHub Freemium
SourceTree Windows y Mac - Freemium
Gittyup (Antiguo GitAhead) Windows, Mac y Linux GitHub Open Source
Aurees Windows, Mac y Linux - Open Source
Fork Windows y Mac - Pago
Relagit Windows, Mac y Linux GitHub Open Source
GitBreeze Windows, Mac y Linux - Freemium
Gitnuro Windows, Mac y Linux GitHub Open Source
SmartGit Windows, Mac y Linux - Freemium
lazygit Terminal GitHub Open Source
tig Terminal GitHub Open Source

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev