Git para #HacktoberFest
Published: 2020-09-25 16:08:07

Hoy quiero explicarte de forma muy sencilla como usar git, por una razón muy particular en poco días empieza el Hacktoberfest un evento de digital ocean junto a GitHub, la primera vez que empecé con este evento fue en 2017 y al parecer en ese momento ya tenía 5 años pero la fecha del primer post que encontré fue de 2015, desde 2017 hasta el día de hoy participe todos los años, dentro de las cosas divertidas del reto es que por cumplirlo te llevas una franela y un pack de calcomanías/stickers completamente gratis, así que quiero enseñarte para que tu también te puedas llevar una franela, empieces a contribuir y quizás ver un poco el poder que puede tener el software libre.

Voy a hacer mi mejor esfuerzo para que te lleves esa franela, la han enviado los años anteriores a cualquier parte del mundo sin ningún costo y quisiera que la mayor cantidad de personas posibles se la lleven este año, voy a simplificar muchos términos al máximo para que podamos llegar a más personas así que me van a disculpar de antemano, si me equivoco me disculpan y nos ayudan a mejorar.

> La mejor forma de entender es hacer los pasos uno a uno tal como están en el documento

Lo primero que debes hacer es registrarte aquí:
[hacktoberfest.digitalocean.com](https://hacktoberfest.digitalocean.com/)

## ¿Para quién es este contenido?

Si eres:

* Programador junior / novato
* Diseñador
* Redactor
* O te llama la atención cualquiera de las anteriores y quieres una franela gratis, esto es para ti!

## Actividades:

* Una introducción rápida a git
* Como hacer un commit
* Como crear una rama
* Una introducción a Github
* Como hacer un clone de un repo
* Como hacer un push
* Como crear un pull request

Revisando las reglas del #Hacktoberfest y como poder ayudarte para ganarte tu franela, te tengo pequeña propuesta para que hagas tus pull request, puedas llevarte tu franela y ampliar la comunidad, toda la información te la voy a dejar al final, en cualquier caso vas a aprender lo básico de git y github si no lo sabias y eso ya es ganancia.

## Una introducción muy rápida a git

Quiero empezar por lo más básico de git vamos a instalarlo y configurarlo, en mi caso tengo mac, el proceso es un poco diferente en windows pero no te detengas las bases de este contenido te van a servir para que también puedas hacerlo.

Esta es una muy breve descripción de que es git y un ejemplo de su uso, git es un manejador de control de versiones, aja y que es eso? Aquí el ejemplo:

Imagina que estás haciendo un documento de texto y tienes 2 jefes (Messi y Cristiano Ronaldo), el primer jefe te pide que hagas una factura de 5.000 ítems duras 3 días construyendo la factura terminas estas cansado se la muestras al primer jefe (Messi) y él la aprueba todo está correcto y tu estas contento, pero el segundo jefe (Cristiano) te dice que borres 430 ítems de la mitad del documento que ya no van, borrar es sencillo y quitas esos 430 items guardas tu documento en PDF y se lo mandas a Messi y te dice que que paso con los 430 items? Que los coloques de nuevo!!!!, pero no habías hecho una copia de los 5.000 items habías sobre-escrito el documento, aquí es donde un manejador de versiones es muy útil te mueves a la primera versión y listo!, esto es lo que hace git en un extremo resumen.

Los documentos anteriores serian algo así
* Version 1 -> 5.000 items
* Version 2 -> 4,570 items

Ahora sí, manos a la obra que nos va a hacer falta:

* Descargar e instalar git (Paso 1)
* Configurar git (Paso 2)

## (Paso 1) Descargar Git

Entra en [git-scm.com](https://git-scm.com), una vez aquí en el sitio oficial de git entramos al link Downloads, el sitio automáticamente detecta nuestro sistema operativo así que le damos Download e instalamos.

![Download git](https://dev-to-uploads.s3.amazonaws.com/i/en7ouphvbraifyioelx6.png) 

En windows vas a tener una terminal que es un lugar donde vas a escribir los comandos de git, en linux y mac puedes abrir directamente la terminal del sistema operativo.

## Paso 2 Configurar Git

Configurar git, vamos a abrir la terminal, no te asustes la terminal es un lugar donde escribir comandos pero no va a dañar tu maquina, no va a pasar nada te lo garantizo, lo peor que puede pasar es que te ganes una franela.

Los comandos son sencillos:

Solamente vamos a usar 2:

```
git config --global user.name "Rafael Hernandez"
git config --global user.email rafaelje@gmail.com
```

Listo!!!! Ya tienes git configurado para empezar esta primera parte. El correo que coloques es muy importante y lo vamos a usar más adelante cuando creemos la cuenta en GitHub, si te equivocas en cualquier momento puedes cambiar tu nombre o tu correo sin ningún problema con el mismo comando así que no te preocupes.

## Primer commit

Un commit es un cambio en la historia de nuestro documento, cada vez que hacemos un cambio en el documento se almacenan en nuestra base de datos de control de versiones y se le asigna un identificador único para que podamos volver a él en cualquier momento, vamos con el primer ejemplo:

Vamos a crear la factura de Messi en un documento .txt pero esta vez mucho más simple, vamos a colocar solamente 3 items:

```
Encabezado
Dirección
Número de factura

Item 1
Item 2
Item 3

Pie de página
```

Lo guardamos en nuestra maquina, abrimos nuestra terminal y escribimos lo siguiente:

```
Git init
```

Con este comando creamos toda la estructura de Git en la carpeta y estaría lista para empezar a recibir los cambios, luego de esto vamos a agregar nuestro archivo y a crear nuestro primer commit:

```
Git add .
Git commit -m “factura lista”
```

Con esto ya nuestro manejador de versiones tiene su primera versión y podemos verla haciendo un log

```
Git log --online
```

Podemos ahora hacer una modificación en nuestro documento salvarlo y colocar nuestra segunda versión, para esto vamos a eliminar un ítem del documento, vamos a guardarlo nuevamente y hacer un nuevo commit

```
Git add .
Git commit -m “eliminar 1 item de la factura”

Git log --oneline
```

¡Ahora ya tenemos una historia! esto es lo más básico en git
 

## Introducción a GitHub

Ya vimos git como nuestro control de versiones pero todo lo que vimos es local en nuestra máquina que pasa cuando queremos compartir nuestros archivos o proyectos con más de una sola persona o tenerlo en la nube sin importar en ¿Qué máquina estés? aquí entra GitHub, ellos nos permiten subir nuestro código a la nube y compartirlo con el resto del mundo, no solo existe GitHub también existen otros como Bitbucket o Gitlab son otras alternativas muy interesantes para revisar pero en este caso GitHub es quien nos apoya para nuestra franela así que vámonos con ellos!

## Crear una cuenta en GitHub

Es completamente gratis, entras en [github.com](https://github.com)  es un proceso de registro sencillo.

![Registro de GitHub](https://dev-to-uploads.s3.amazonaws.com/i/igyruntjeazyr6y5fycj.png)

## Clonando el repositorio

Vamos a hacer la primera prueba para ver si todo está correcto y poder empezar a cumplir con el reto, vamos a clonar el repositorio, para hacerlo tienes que abrir la terminal nuevamente y ejecutar este comando:

```
Git clone https://github.com/rafaelje/hacktober.git

cd hacktober
```

Si todo sale bien tendrás una carpeta llamada hacktober en tu máquina aquí es donde vamos a empezar a trabajar, abre el documento  README.md con cualquier editor de texto si tienes Visual Studio Code o algo similar mucho mejor

![README.md](https://dev-to-uploads.s3.amazonaws.com/i/ye5yiti4r8l1zgms9j33.png)

Vamos a revisar la conexión
```
Git remote -v

# deberías ver algo como esto:
# origin	https://github.com/rafaelje/hacktober.git (fetch)
# origin	https://github.com/rafaelje/hacktober.git (push)
```

## Creando tu nueva rama
Entras a la carpeta que acabas de bajar y aquí creas una nueva rama

```
Git checkout -b <cualquier nombre para tu rama, ejem. change1>
```

## Agregando contenido

Abre el archivo README.md y agrega una persona

Luego agregas al stage haces tu commit y haces el primer push a la rama

```
Git add .
Git commit -m “agregue mis cambios”
Git push origin <cualquier nombre para tu rama, ejem. change1>
```

## Creando tu primer Pull Request