# Git y Github

Git es un sistema de control de versiones distribuido que permite a los desarrolladores rastrear y gestionar cambios en el código. GitHub es una plataforma basada en la web que utiliza Git para el control de versiones y facilita la colaboración en proyectos.

### **Instalación**

#### **Instalación de Git**

* **Windows:**
  1. Descarga Git desde [git-scm.com](https://git-scm.com/).
  2. Ejecuta el instalador y sigue las instrucciones.
* **macOS:**
  1. Es probable que Git ya esté instalado en tu computadora, para verificarlo ingresa el siguiente comando en el terminal: **`git -v` .** Si aparece el número de versión de Git, ya lo tienes instalado.
  2. Si no lo tienes instalado utiliza el siguiente comando en el terminal: **`brew install git`**.
  3. Alternativamente, descarga desde [git-scm.com](https://git-scm.com/).

#### **Configuración Inicial**

Configura tu nombre de usuario y correo electrónico:

```bash
git config --global user.name "Tu Nombre"
git config --global user.email "tuemail@example.com"
```

#### **Comandos Básicos de Git**

#### **Inicializar un repositorio**

* Crear un nuevo repositorio: El repositorio es el directorio donde guardarás la información del proyecto que vayas a crear. Una vez que te ubiques dentro de ese directorio usando el terminal, ingresa el siguiente comando.

  ```bash
  git init
  ```

#### **Añadir y confirmar cambios**

* Para que Git comience a controlar los cambios en los archivos de tu repositorio debes indicarle los nombres de los archivos.
* Si solo quieres monitorear archivos específicos, usa el siguiente comando:

  ```bash
  git add nombre_del_archivo
  ```
* Si quieres monitorear todos los archivos del repositorio utiliza:

  ```bash
  git add .
  ```

  Este es el comando que utilizarás más frecuentemente para guardar tus cambios. Cada vez que quieras definir un punto de control, este es el comando que debes utilizar.
* En cada oportunidad que incluyas un punto de control debes confirmar los cambios con un commit e incluir un texto recordatorio que resuma los últimos cambios realizados:

  ```bash
  git commit -m "Mensaje del commit"
  ```

  El mensaje que incluyas te permitirá identificar la versión de tus archivos en caso quieras regresar a ese punto.

#### **Ver el estado y el historial**

* Ver el estado del repositorio:

  ```bash
  git status
  ```
* Ver el historial de commits: Si quieres ver todos los cambios guardados desde el primer commit utiliza este comando.

  ```bash
  git log
  ```

#### Saltar entre versiones

* Regresar a un punto de control: Utilizando este comando puedes regresar a una versión identificada con el commit\_hash que aparece en el historial (log).

  ```bash
  git checkout commit_hash
  ```

#### **Clonar un repositorio**

* Clonar un repositorio existente: Cuando quieras descargar hacia tu computadora todo el contenido de un repositorio.

  ```bash
  git clone URL_del_repositorio
  ```

#### Vídeo tutorial de Git

<https://www.loom.com/share/0e1f7466a3c6423b879d40e1bf24e673?sid=516e205a-5a96-4430-b8be-0923941104ce>

### **Trabajo con Ramas**

Cuando empieces a trabajar en un proyecto estarás sobre la rama principal (master), pero más adelante tal vez te interese crear una nueva rama que te permita hacer cambios que no afecten a la rama principal. O tal vez quieres proponer un cambio a un proyecto de otra persona y vas a trabajar sobre una copia en la que harás tus propuestas de cambios sin afectar la rama principal. En esos casos debes crear una rama.

#### **Crear y Cambiar de Rama**

* Crear una nueva rama: Al crear una rama haces una copia de la rama principal a partir de la cual puedes incluir nuevos cambios.

  ```bash
  git branch nombre_de_la_rama
  ```
* Cambiar a otra rama:

  ```bash
  git checkout nombre_de_la_rama
  ```
* Crear y cambiar a una nueva rama: Este será el comando más utilizado para crear nuevas ramas.

  ```bash
  git checkout -b nombre_de_la_rama
  ```

#### **Fusionar Ramas**

* Fusionar una rama en la rama actual: Una vez que estás seguro de que los cambios que hiciste en una rama no tienen errores y quieres incorporarlos a tu rama principal, utiliza este comando para fusionar los cambios.

  ```bash
  git merge nombre_de_la_rama
  ```

### **Trabajando con GitHub**

GitHub es una plataforma web de desarrollo colaborativo que utiliza Git para el control de versiones de proyectos. Permite a los desarrolladores alojar sus proyectos, colaborar con otros, gestionar versiones de código y realizar seguimiento de cambios. GitHub facilita la colaboración mediante características como pull requests, issues y proyectos. Es ampliamente utilizado en la comunidad de desarrollo de software para proyectos de código abierto y privados, proporcionando un entorno eficiente para la gestión y revisión del código.

#### **Crear un Repositorio en GitHub**

1. Inicia sesión en [GitHub](https://github.com/). Si no tienes un usuario, procede a crearlo.
2. Haz clic en "New" para crear un nuevo repositorio.
3. Completa la información del repositorio y haz clic en "Create repository".

#### **Conectar un Repositorio Local a GitHub**

* Añadir un repositorio remoto: Este comando establece la conexión entre el repositorio local y el repositorio en GitHub.

  ```bash
  git remote add origin URL_GitHub
  ```

#### **Enviar Cambios a GitHub**

* Enviar cambios al repositorio remoto:

  ```bash
  git push origin nombre_de_la_rama
  ```

#### **Recuperar Cambios de GitHub**

* Recuperar cambios del repositorio remoto: Recupera hacia el repositorio local el contenido de la rama especificada que está en GitHub.

  ```bash
  git pull origin nombre_de_la_rama
  ```

\<aside> 💡 **Tip:** Si estás conectando por primera vez Git a GitHub, asegúrate de estar utilizando el mismo usuario.

Recibirás el siguiente mensaje:

```bash
Username for '<https://github.com>': 
```

Asegúrate de ingresar tu usuario. Luego se te solicitará la contraseña

```bash
Password for '<https://tuusuario@github.com>':
```

Ingresa tu Token de Acceso Personal de GitHub. Si no lo tienes, debes crearlo siguiendo los siguientes pasos:

1. Inicia sesión en tu cuenta de GitHub.
2. Ve a [Settings](https://github.com/settings/profile).
3. En el menú de la izquierda, selecciona **Developer settings**.
4. Haz clic en **Personal access tokens**.
5. Haz clic en **Generate new token**.
6. Asigna un nombre a tu token, selecciona los permisos necesarios (al menos **`repo`** para acceso completo a los repositorios) y haz clic en **Generate token**.
7. Copia el token generado y guárdalo en un lugar seguro. No podrás verlo de nuevo una vez que cierres la ventana. \</aside>

### **Colaboración**

#### **Fork y Pull Request**

* **Fork:** Duplica un repositorio en tu cuenta para hacer cambios.
* **Pull Request:** Solicita la incorporación de tus cambios en el repositorio original.

#### **Revisar y Fusionar Pull Requests**

1. Ve a la pestaña "Pull requests" en GitHub.
2. Revisa los cambios y comentarios.
3. Si la propuesta de cambios te satisface, haz clic en "Merge pull request" para fusionar los cambios.

#### Vídeo tutorial de GitHub

<https://www.loom.com/share/d60ea427b61646cea80f474c5d2e4a10?sid=a917e006-8e41-4420-9dae-e407ee837159>

### Documentación de ayuda.

* [Documentación de Git](https://git-scm.com/doc)
* [Guía rápida de Git y GitHub en español](https://training.github.com/downloads/es_ES/github-git-cheat-sheet/)
* [Guía de GitHub](https://docs.github.com/es/get-started/start-your-journey)
