🌿 Git esencial
Control de versiones desde cero: entiende qué es git, domina init/add/commit, navega por el historial, trabaja con branches y aprende a usar .gitignore. Extra: deja que Claude Code haga los commits por ti.
📦 Qué es git
Instantáneas en el tiempo — control de versiones distribuido
🎯 Concepto central
Git es un sistema que registra snapshots de tu proyecto con el tiempo. Piensa en un álbum de fotos de tu código: en cualquier momento puedes volver a cualquier foto y crear ramas paralelas sin afectar las demás.
Línea de tiempo de commits: main avanza, la branch paralela no interfiere.
✓ Con git
- ✓Deshacer cualquier cambio en segundos
- ✓Trabajar en funcionalidades sin romper lo que funciona
- ✓Historial completo de quién cambió qué
- ✓Colaborar sin sobrescribir el trabajo de los demás
✗ Sin git
- ✗projeto_final_v2_MESMO_FINAL.zip
- ✗Eliminaste código que necesitabas → no hay vuelta atrás
- ✗Dos desarrolladores editan el mismo archivo → caos
- ✗No sabe qué cambió desde ayer
🚀 init / add / commit
Los tres comandos fundamentales: el flujo que repetirás cientos de veces
git init — crear el repositorio
Ejecútalo una vez en la raíz de tu proyecto. Crea la carpeta oculta .git/ que almacenará todo el historial.
$ cd meu-projeto
$ git init
Initialized empty Git repository in /meu-projeto/.git/
git add — preparar archivos
Agrega archivos al "área de staging": la lista de lo que entrará en el próximo commit. Piensa en ello como seleccionar fotos para un álbum antes de imprimirlo.
$ git add index.html # arquivo específico
$ git add . # todos os arquivos modificados
$ git add -p # modo interativo (seleciona partes)
git commit — guardar la instantánea
Registra los archivos staged en el historial con un mensaje descriptivo. Una vez hecho el commit, nunca se pierde.
$ git commit -m "feat: adiciona página de contato"
[main 3a4f8bc] feat: adiciona página de contato
2 files changed, 47 insertions(+)
💡 Consejo: git status es tu mejor amigo
Antes de cualquier add/commit, ejecuta git status. Muestra exactamente qué está modificado, qué está en staging y qué no está rastreado. Elimina la incertidumbre.
🕐 Historial y registro
Navegar por el pasado del proyecto: auditoría, diagnóstico, reversión
El historial es una de las ventajas más poderosas de git. Saber qué cambió, cuándo y por qué transforma la depuración de errores de horas a minutos.
$ git log # histórico completo
$ git log --oneline # resumido: hash + msg
$ git log --oneline --graph # com grafo de branches
$ git diff # o que mudou (não staged)
$ git diff --staged # o que vai no próximo commit
$ git diff HEAD~1 # vs commit anterior
$ git show abc1234 # detalhes de um commit específico
$ git blame arquivo.html # quem editou cada linha
⏪ Cómo deshacer cambios
git restore arquivo.html — descarta los cambios sin commit en el archivo
git restore --staged arquivo.html — quítalo del staging sin descartarlo
git revert HEAD — crea un commit que deshace el último (seguro para uso en equipo)
git reset --hard HEAD~1 — vuelve 1 commit (CUIDADO: destruye los cambios locales)
✓ Buenas prácticas
- ✓Usa
git revertpara deshacer cambios en repos compartidos - ✓Ejecuta
git statusegit diffantes de cada commit - ✓Haz commits con frecuencia — los commits pequeños son más fáciles de revertir
✗ Evitar
- ✗Nunca uses
--harden una rama compartida - ✗No hagas commit con un mensaje vago ("fix", "update", "wip")
- ✗No mezcles varios cambios no relacionados en 1 commit
🌿 Branches
Trabajar en paralelo sin miedo a romper lo que funciona
🌿 Crear una branch en git es barato
Crear una branch no copia archivos: es solo un puntero a un commit. Por eso, crear y cambiar de branch es instantáneo, incluso en proyectos grandes.
$ git branch # lista branches
$ git branch feature/login # cria branch
$ git checkout feature/login # muda para branch
$ git checkout -b feature/login # cria E muda (atalho)
$ git switch -c feature/login # alternativa moderna
$ git merge feature/login # mescla na branch atual
$ git branch -d feature/login # deleta branch (já mergeada)
$ git stash # guarda mudanças temporariamente
$ git stash pop # recupera do stash
Feature Branch Flow
Cada nueva funcionalidad vive en su propia branch. main siempre se mantiene estable. El merge se hace solo después de la revisión y las pruebas.
Conflictos de merge
Cuando dos branches editan el mismo fragmento, git se detiene y pide una resolución manual. Los marcadores <<<<<<< / ======= / >>>>>>> muestran ambos lados.
git stash — pausa rápida
¿Necesitas cambiar de rama, pero tienes cambios sin commit? git stash guarda todo temporalmente. git stash pop lo trae de vuelta.
🚫 .gitignore
Qué no versionar — proteger secretos y mantener limpio el repo
# Dependências
node_modules/
vendor/
# Segredos e configuração local
.env
.env.local
*.key
credentials.json
# Arquivos de build
dist/
build/
*.min.js
*.min.css
# Sistema operacional
.DS_Store
Thumbs.db
# IDEs
.idea/
.vscode/settings.json
*.swp
⚠️ Nunca hagas commit de secretos
Las claves de API, contraseñas y tokens incluidos en commits quedan visibles para siempre en el historial público, incluso después de eliminar el archivo. Usa siempre variables de entorno y .gitignore desde el primer commit.
✓ Ignorar siempre
- ✓
.envy archivos de secretos - ✓
node_modules/— se instala mediante npm - ✓Archivos de build generados automáticamente
- ✓Registros y archivos temporales
🛠️ Comandos útiles
git rm --cached arquivo — deja de rastrear
git check-ignore -v *.log — por qué está ignorado
gh repo create — ya ofrece una plantilla de .gitignore
🤖 Claude Code hace commits por ti
Mensajes de commit profesionales sin esfuerzo — Conventional Commits automáticos
Claude Code ejecuta automáticamente el ciclo completo de git al final de cada tarea. Pero entender lo que está haciendo —y ajustar cuando sea necesario— es lo que distingue a un usuario avanzado de uno principiante.
# Estrutura: tipo(escopo): descrição imperativa
feat: adiciona autenticação com Google
fix(auth): corrige loop infinito no login
docs: atualiza README com instruções de deploy
style: formata CSS segundo BEM
refactor(api): extrai lógica de validação para util
test: adiciona testes para módulo de pagamento
chore: atualiza dependências para versão segura
🤖 Cómo pedirle a Claude Code
Al final de cualquier tarea: "Haz commit de los cambios con un mensaje descriptivo."
Para un flujo completo: "Agrega todos los archivos, haz commit con un mensaje en formato Conventional Commits y haz push a main."
Claude genera automáticamente algo como: feat(pages): adiciona página de portfólio com grid responsivo
✓ Buen mensaje
- ✓Imperativo: "agrega", "corrige", "elimina"
- ✓Describe lo que hace (no lo que hiciste)
- ✓Máximo ~72 caracteres en la primera línea
- ✓Tipo claro: feat/fix/docs/chore
✗ Mensaje inadecuado
- ✗"fix" — ¿qué corrigió?
- ✗"update" — genérico e inútil
- ✗"WIP" con commit en main
- ✗"ajusté algunas cosas"
🎯 Resumen del módulo
Qué aprendiste
- ✓Git es un sistema de instantáneas, no una copia de archivos
- ✓Flujo:
git add→git commit -m "msg" - ✓Historial con
git log, cambios congit diff - ✓Branches para trabajo paralelo seguro
- ✓.gitignore protege los secretos y mantiene limpio el repo
- ✓Claude Code automatiza los commits con Conventional Commits
Siguiente módulo
Con el git local dominado, el siguiente paso es subir el proyecto a GitHub: crear un repositorio, configurar el remote, hacer push, SSH, gh CLI y colaborar con PRs.
Módulo 6.2 — GitHub y repositorios→