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).
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:
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 |