viernes, 4 de octubre de 2019

Git para matemáticos 2: Repositorios locales y web.

Esta es la primera de una serie de entradas donde hablo de una herramienta que aprendí a usar hace relativamente poco: git.
  1. Introducción y instalación y configuración inicial.
  2. Repositorios locales y web.
  3. Comandos básicos y el día-a-día.
  4. Submódulos (pendiente).
  5. Ramas (pendiente).
  6. Git y Overleaf (pendiente).
Disclaimer: Esto no pretende ser un tutorial completo de cómo usar git y no solo eso, es muy probable que los conceptos no sean exactamente como los platico en estas entradas. Yo no soy un experto en git y más bien me enfocaré en cómo lo uso en la práctica. Si crees que algo de lo que digo puede mejorar, déjalo en un comentario. Por otro lado, la mayoría de lo que diga llevará referencias, pero si algo no queda claro, por favor, házmelo saber.
Me enfocaré en los usos prácticos para alguien que jamás ha usado git. Si tú ya lo usas con frecuencia pero te enfrentas a algunos de mis problemas, las referencias en los enlaces deberían ayudarte.

Repositorios, repositorios locales y repositorios web.

En esta entrada vamos a trabajar con la estructura básica de git: los repositorios. Aprenderemos qué son, a crearlos y a trabajarlos de manera local y de manera web. Luego hablaremos de cómo confirgurar las cosas para que la sincronización con la web funcione.

Bueno, al grano ¿qué es un repositorio? "Repositorio" es la palabra fresa que usa git para un "proyecto". Es decir, cuando hablo de un repositorio, normalmente estoy hablando de un proyecto andando. En términos prácticos, un repositorio es simplemente una carpeta a la que se le ha pedido a git que registre los cambios. Es la semilla básica de trabajo en git y es una estructura realmente sencilla. A su vez, permite que sea muy versátil. Por ejemplo, yo tengo un repositorio para cada uno de mis artículos, uno para cada charla que he dado este año, uno para mi tesis de doctorado, uno para mis referencia bibliográficas, uno para mi página pesonal y uno en una carpeta donde tengo todos mis dibujitos.

Existen esencialmente dos maneras de hacerse de un repositorio en tu sistema. Tomar una carpeta existente e iniciar un repositorio en ella o clonar un repositorio existente en algún otro lugar. Vamos a explicar la primera.

$ cd ruta/a/la/carpeta/articulo
$ git init

O alternativamente

$ git init ruta/a/la/carpeta/articulo

Desde ahora nuestra carpeta articulo es un repositorio de git (y debemos tratarla con el respeto que se merece si queremos que git se porte bien, pero más de eso después).

Nuestra carpeta es un repositorio local es decir, a pesar de que con git podemos rastrear todo lo que suceda en nuestra carpeta y por ejemplo, restaurarla a una versión antigua, si lo que queríamos en un inicio es que git se convirtiera en nuestra herramienta de respaldo, sincronización y colaboración, aún estamos muy lejos. La manera de lograr este objetivo es a través de los repositorios web.

A grandes razgos un repositorio web es un repositorio que existe en algún servidor en internet. Entre los más populares figuran GitHub, BitBucket y GitLab. Cada uno ofrece cosas distintas cosas pero todos funcionan más o menos igual: creas una cuenta y esto te da derecho a tener cierto número de repositorios (públicos o privados) con cierto número de colaboradores. Todos tienen una versión gratis y una versión de pago que usualmente mejoran lo que ofrecen. Los dejo que ustedes decidan, pero yo en lo personal uso la versión gratis de BitBucket. Algo importante es que usualmente el espacio en servidor no es un asunto, a diferencia de Dropbox. Estos servidores están pensados para guardar repositorios de git y a veces tienen restricciones en el tamaño de estos, pero hasta la fecha este no ha sido un problema para mí.

A partir de este momento supondré que ya crearon una cuenta en su servidor favorito y que ya saben cómo crear un repositorio en esta cuenta. Usualmente esto es muy fácil y cada uno de los servidores tienen instrucciones muy detalladas al respecto. Una vez que crean un repositorio en el servidor, este automáticamente tiene un link (usualmente encontrarlo no es nada difícil). También supondré que ya saben obtener ese link.

Ahora explicaré la otra forma de hacerse de un repositorio: clonar un repositorio existente. Esto es extremadamente fácil una vez que ya se tiene el link del repositorio web. Basta usar el comando

$ git clone https://linkDelRepositorio.git

Voy a usar como ejemplo un repositorio que tiene el template de mi tesis de doctorado. Para hacer esto simplemente hay que correr.

$ git clone https://amontero90@bitbucket.org/antonio_montero/thesistemplate.git

Y ahora tú tienes una copia de mi repositorio en tu computadora el cual puedes trabajar como a ti te plazca. Este será el resultado cada que se clona un repositorio web.

Vincular un repositorio local y uno web.

Ahora que ya sabes que existen los repositorios web y los locales vamos a explicar un poco lo de la sincronización. El proceso es relativamente sencillo. Lo que hay que hacer es que tu repositorio local rastree un repositorio web. Para ellos hay esencialmente dos maneras. Digamos que vas a empezar un proyecto, entonces el proceso a seguir es bastante sencillo:

  1. Crea un repositorio vacío en tu servidor de preferencia. 
  2. Clona ese repositorio a tu computadora. 

Como resultado de esto se creo una carpeta "vacía" en tu computadora. En realidad esta carpeta tiene algunos archivos ocultos que precisamente es lo que usa git para funciona. Ahora puedes trabajar en esa carpeta, crear archivos y demás. Luego habrá que decirle a git que rastree esos archivos, pero de eso más después.

Si más bien estás en la situación de que ya tienes un repositorio local con algunos archivos, lo que hay que hacer ahora es vincularlo a un repositorio web. Para ello lo que hay que hacer agregar un remoto a tu repositorio existente. En realidad lo agregas a la rama en la que estás trabajando, pero ignora por un segundo esas cosas técnicas. Para agregar un remoto lo que hay que hacer es lo siguiente.
  1. Crear un repositorio vacío en tu servidor de preferencia.
  2. Vincularlo a tu repositorio local.
Para hacer lo segundo basta ejecutar

$ git remote add origin https://linkDeTuRepositorioVacio.git

dentro de tu repositorio local. A partir de este momento ya existe el vínculo entre tu repositorio web tu repositorio local. A esta operació le llamaremos vincular un remoto; será útil después.

No hay comentarios.:

Publicar un comentario