¿Qué problema resuelve Git?
Imagina que tienes un archivo:
main.py
Hoy funciona.
Mañana haces cambios.
Pasado mañana algo deja de funcionar.
Sin Git:
- No sabes qué cambió.
- No sabes cuándo cambió.
- No sabes quién lo cambió.
- No puedes volver fácilmente atrás.
Git resuelve eso. Piensa en Git como una máquina del tiempo para tu código.
---
## Conceptos fundamentales
### Repositorio
Un repositorio es el proyecto completo.
Ejemplo:
repositorio_proyecto
Contiene:
README.md
src/
test/
docs/
scripts/
Git almacena el historial de todos esos archivos.
Commit
Un commit es una fotografía del proyecto.
Ejemplo:
Commit #1
README creado
Luego:
Commit #2
Terraform inicial
Luego:
Commit #3
Bucket S3 agregado
Cada commit permite regresar a ese estado.
Piensa en ellos como puntos de guardado de un videojuego.
Branch
Una branch (rama) es una línea de trabajo independiente.
Ejemplo:
main
contiene v1 estable
Quieres agregar S3
Creas:
feature/s3-bucket
Trabajas ahí. Si algo sale mal:
main
permanece intacto.
¿Por qué no trabajar directamente sobre main?
Porque main debe ser siempre estable.
Regla profesional:
Nunca desarrollar directamente en main
## Flujo profesional
### main
Código estable.
### develop
Integración.
### feature/*
Desarrollo.
Visualmente:
main
│
└── develop
│
├── feature/s3
│
├── feature/budget
│
└── feature/iam
Crear SSH
¿Por qué?
Para evitar escribir usuario y contraseña constantemente.
Generar clave:
Resultado:
C:\Users\TuUsuario\.ssh\
Archivos:
id_ed25519
id_ed25519.pub
Nunca compartir id_ed25519
Sí compartir id_ed25519.pub
Agregar SSH a GitHub
Copiar:
type $env:USERPROFILE\.ssh\id_ed25519.pub
Ir a GitHub:
Settings
↓
SSH and GPG Keys
↓
New SSH Key
Pegar contenido.
Verificar conexión
ssh -T git@github.com
Respuesta esperada:
Hi usuario!
You've successfully authenticated.
Crear repositorio
En GitHub:
repositorio_proyecto
Opciones:
✔ Private
✔ README
✔ License
Clonar repositorio
Con GitHub Desktop:
File
↓
Clone Repository
Seleccionar:
repositorio_proyecto
Ubicación:
C:\Projects
Resultado:
C:\Projects\repositorio_proyecto
Abrir en VS Code
Dentro del directorio:
code .
Crear rama develop
Primera vez:
git checkout -b develop
Subir:
git push -u origin develop
¿Por qué?
Porque main será producción.
develop será integración.
Subir cambios
git push
Pull Request
GitHub:
feature/feature-branch
↓
develop
¿Por qué?
Permite revisar antes de integrar.
Merge
Cuando la revisión es aprobada:
feature/feature-branch
↓
develop
Posteriormente:
develop
↓
main
Branch Protection
Configurar en GitHub:
Settings
↓
Branches
↓
Add Rule
Para:
main
Activar:
✔ Require Pull Request
✔ Require Status Checks
✔ Require Branch Up To Date
¿Por qué?
Evita errores accidentales.
Flujo diario del proyecto
Cada vez que trabajes:
git checkout develop
git pull
Crear nueva rama:
git checkout -b feature/nombre
Trabajar.
Guardar:
git add .
git commit -m "feat: descripcion"
Subir git push
Crear Pull Request.
Integrar.
Eliminar rama.
Mentalidad correcta
No pienses:
Git guarda archivos
Piensa:
Git guarda historia
La historia del proyecto será tan valiosa como el código mismo porque permitirá entender:
- ¿Qué se hizo?
- ¿Cuándo se hizo?
- ¿Por qué se hizo?
- ¿Quién lo hizo?
- Cómo volver atrás si algo falla.
Esa disciplina será especialmente importante.
Further Reading
Check out the other articles in this series:
GIT:
SOCIAL SHARE CARD GENERATOR