Github para Open Source
Published: 2020-10-15 15:47:14

Git y Github cumplen un rol importante, no solo para el Software de Código Abierto (Open Source) sino también en la vida cotidiana de desarrolladores y compañías. Pero, entendemos la diferencia entre ambos y cómo funcionan?

Git es un “Distributed Version Control System” (DVSC) que permite observar y controlar los cambios en el código. Es muy usado en proyectos porque es multiplataforma, gratuito, eficiente y fácil de usar. Un sistema de control de versión permite monitorear, revisar y manejar las versiones de nuestro proyecto e incluso revertir errores que pueden ocurrir durante el desarrollo. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ay4v7aoxcxqg11mxelhk.png)

Pero, cómo empiezo??? Vamos a ver los comandos principales de un flujo de trabajo con Git:

- Para crear un nuevo repositorio

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/7zo40rj913xime0gomuj.jpg)

- Crear una copia local del repositorio que se está ejecutando

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/u7unr5321pie7xbz06bd.jpg)

- Clona un repositorio remoto

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/9lbwi3nd31gmstw938c5.jpg)

                           Flujo de trabajo

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/i5uhmj84ycqp3tqxjoi3.jpg)

Directorio --> Contiene los archivos
Index --> Zona intermedia.
Main (antes conocido como Master) --> Apunta al último commit realizado.

                             Add y Commit

- Para registrar todos los cambios (Index) 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/faacy06a4bf8idzgva24.jpg)

- Para registrar un solo archivo

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/e596ma76glvtfk91yz14.jpg)

- Para hacer commit de estos cambios, incluyendolos en el “Main”

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/gc75z7bkek6cokb79ucw.png)

                           Envío de cambios

- Envía los cambios a tu repositorio remoto (Main o la rama a la que se desee mandar los cambios)

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/u11emx9bkh9jp9u13tvf.jpg)

- Para conectar tu repositorio local a un repo remoto.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/4di4v5vxrj3z2hskmt1h.jpg)


                                Ramas

Son utilizadas para desarrollar funcionalidades aisladas de otras ramas. 

- Crea tu rama

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/rz2rwcgmvu4cd8o6dcls.jpg)

- Cambia a la rama principal

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/mjh8sl9fbtnrpfpollrc.jpg)

- Borra la rama

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/id3v5zijv5z6mkrx2134.jpg)

- Para subir la nueva rama y hacerla visible en el repo remoto

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/uo71sqeripfrvxgumuwd.jpg)

- Actualiza el repo con los cambios

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/jo5wpunys1v5fj9xl1c4.jpg)

- Fusiona otra rama con la rama activa (Main)

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/zix89pmcgikmpcpjztpy.jpg)

- Muestra los cambios en el repo (nuevos, viejos y modificados)

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/6fsekzieq0jriagxgs2d.jpg)

- Muestra todos los commits

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/aidas7dinov9ljmfiwt6.jpg)

                      ¿Y entonces qué es Github?

Es una plataforma creada en 2008 que nos permite manejar y almacenar los repositorios de git en la nube. Eso es todo, podes optar por mantener tus proyectos con git localmente, ya que github actúa como intermediario para mantener un backup de git externamente, además de hacer mucho más fácil el colaborar y compartir tus proyectos con otros desarrolladores. 

                          ¿Qué es un fork?

Un fork es un mecanismo propio de GitHub que existe por que no todo el mundo puede editar sobre tu repositorio; un fork es un clon del repo en github y que funciona como un branch del original y es la forma principal por la cual alguien puede proponer cambios a un repositorio que no creo.

              ¿Y en qué se diferencia un fork de un clon?

Cuando hacemos un clon de un repositorio, te bajas una copia del mismo a tu máquina. Empiezas a trabajar, haces modificaciones y haces un push. Cuando haces el push estás modificando el repositorio que has clonado.

Cuando haces un fork de un repositorio, se crea un nuevo repositorio en tu cuenta, con una URL diferente (fork). Acto seguido tienes que hacer un clon de esa copia sobre la que empiezas a trabajar de forma que cuando haces push, estás modificando TU COPIA (fork). El repositorio original sigue intacto. El uso más común es el de permitir a los desarrolladores contribuir a un proyecto de forma segura.

                      ¿Qué es un pull request?

El pull request es un pedido de merge, y si bien puede usarse dentro de un mismo repositorio donde la persona que lo crea tiene poder para hacer merge, este es el mecanismo que se usa para mandarlos cambios de un fork al repo original.
El objetivo de los PR es la validación y/o documentación de los cambios, ya que permite pedir review de otras personas o, si es dentro del mismo repo y ni reviewers, se puede usar para documentar por que entran X cambios a master.

      --------------------------------------------------------

 Por ahora, esto es lo básico, en la próxima entrada veremos Github CLI en su versión desktop y terminal. Espero les sirva =)