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.
- Working Directory: Tu carpeta de trabajo actual. Donde editas archivos.
- Staging Area (El Carrito): Una zona intermedia donde "preparas" los archivos que quieres guardar. (Comando `git add`).
- 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?
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?
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?
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.