1. El Salva-Vidas del Programador

¿Alguna vez guardaste un archivo como `tesis_final.doc`, `tesis_final_v2.doc`, `tesis_final_AHORA_SI.doc`?

Git soluciona eso profesionalmente. Es un Sistema de Control de Versiones Distribuido.
Te permite guardar el historial completo de tu proyecto, viajar en el tiempo a versiones anteriores, y lo más importante: trabajar en equipo sin sobrescribir el código de tus compañeros.

2. Los 3 Estados de Git

Entender esto es la clave de todo.

  1. Working Directory: Tu carpeta de trabajo actual. Donde editas archivos.
  2. Staging Area (El Carrito): Una zona intermedia donde "preparas" los archivos que quieres guardar. (Comando `git add`).
  3. Repository (La Foto): Cuando confirmas los cambios. Quedan grabados en piedra en la base de datos de Git. (Comando `git commit`).

Evaluación 1: Conceptos

Si modifico un archivo, ¿se guarda automáticamente en el repositorio?

Sí, Git guarda todo en tiempo real.
No. Debes agregarlo (add) y confirmarlo (commit) manualmente.

3. Comandos Esenciales

Tu pan de cada día:

git status     # ¿Qué ha cambiado?
git add .      # Agregar todo al Staging
git commit -m "Agregué el login"  # Guardar foto con mensaje
git log        # Ver historial de fotos
El mensaje del commit (`-m`) es vital. No escribas "arreglos". Escribe "corrige bug en validación de email". Tu "yo" del futuro te lo agradecerá.

4. Ramas (Branches): El Multiverso

Imagina que quieres probar una idea loca sin romper el proyecto principal (`main`).
Creas una rama paralela:

git checkout -b nueva-idea
Ahora estás en una línea temporal alternativa. Puedes borrar todo, romper todo... y la rama `main` sigue intacta.

5. Merge: Fusionando Universos

Tu "nueva-idea" funcionó. Es hora de traerla a la realidad principal.

git checkout main  # Volver al presente
git merge nueva-idea # Traer los cambios
Git intentará unir los códigos automáticamente. Si modificaron líneas diferentes, es magia. Si modificaron la MISMA línea... tenemos un problema.

Evaluación 2: Ramas

¿Por qué usamos ramas?

Para desarrollar funcionalidades aisladas sin afectar el código estable (producción).
Para hacer el código más lento.

6. Conflictos: La Pesadilla

Dos personas editaron el mismo botón. Uno lo puso Rojo. Otro lo puso Azul. Git entra en pánico al hacer Merge.

Aparecerá esto en tu código:

<<<<<<< HEAD
color: red;
=======
color: blue;
>>>>>>> nueva-idea
Tienes que elegir manualmente cuál queda, borrar las marcas raras, y hacer commit de nuevo. Es parte del trabajo.

7. Git vs GitHub

No confundir.
Git: Es el software en tu PC (Local).
GitHub (o GitLab/Bitbucket): Es una web que aloja repositorios Git en la nube (Remoto). Es la red social de los programadores.
Para subir tu código: `git push`. Para bajarlo: `git pull`.

8. Pull Requests (PR)

En equipos profesionales, está prohibido hacer `git push` directo a `main`.

El flujo correcto es: 1. Subes tu rama. 2. Creas una Pull Request en GitHub. 3. Tus compañeros revisan tu código, comentan mejoras ("Code Review"). 4. Si aprueban, se fusiona.
Esto asegura la calidad del código.

Evaluación 3: Colaboración

¿Qué es un Code Review?

Mirar el código para memorizarlo.
El proceso donde otros desarrolladores leen y aprueban tus cambios antes de aceptarlos.

9. .gitignore

Hay cosas que NO deben subir a internet: carpetas gigantes como `node_modules`, archivos con contraseñas `.env`, o archivos basura del sistema (`.DS_Store`).
Creas un archivo `.gitignore` y listas allí todo lo que Git debe ignorar. Es el club VIP de los archivos invisibles.

10. Viajando en el Tiempo

¿Rompiste todo hace 10 minutos?

git checkout .
(Deshace cambios no guardados en archivos).

¿Quieres volver a la versión de ayer?
git checkout [ID-DEL-COMMIT]
Es un superpoder real.

11. Git Flow

Es una convención de nombres de ramas estándar:

  • `main`: Producción (Sagrado).
  • `develop`: Donde se juntan las nuevas "features" antes de salir.
  • `feature/login`: Tu rama de trabajo.
  • `hotfix/bug-urgente`: Parches rápidos para errores críticos.

¡Control Total!

Saber Git es lo que te diferencia de un amateur. Ninguna empresa contrata a alguien que envía código por email o USB.

Ahora tu código está seguro, versionado y listo para equiparse.