PTENES
MÓDULO 6.1

🌿 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.

6
Temas
~40
Minutos
⚡
Intermedio
🛠️
Práctico
1

📦 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.

A B C D HEAD F1 init feat A fix B feat C main feature/nova-funcao

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
📁
Repositorio
Carpeta .git con todo el historial
📸
Commit
Instantánea guardada permanentemente
🎯
HEAD
Dónde estás ahora
🔀
Branch
Línea de trabajo paralela
2

🚀 init / add / commit

Los tres comandos fundamentales: el flujo que repetirás cientos de veces

1

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/
2

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)
3

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.

📂
Working Tree
Archivos que hay ahora en el disco
🗂️
Staging Area
Listo para commit
📚
Repository
Historial permanente
⚛️
Commit atómico
Un cambio lógico
3

🕐 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.

COMANDOS DE HISTORIAL
$ 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 revert para deshacer cambios en repos compartidos
  • ✓Ejecuta git status e git diff antes de cada commit
  • ✓Haz commits con frecuencia — los commits pequeños son más fáciles de revertir

✗ Evitar

  • ✗Nunca uses --hard en una rama compartida
  • ✗No hagas commit con un mensaje vago ("fix", "update", "wip")
  • ✗No mezcles varios cambios no relacionados en 1 commit
🔍
git log
Lista de commits
↔️
git diff
Cambios línea por línea
↩️
git revert
Deshaz los cambios de forma segura
👤
git blame
Quién cambió cada línea
4

🌿 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.

COMANDOS DE RAMAS
$ 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
1

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.

2

Conflictos de merge

Cuando dos branches editan el mismo fragmento, git se detiene y pide una resolución manual. Los marcadores <<<<<<< / ======= / >>>>>>> muestran ambos lados.

3

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.

🏠
main
Branch principal estable
⚗️
feature/
Nueva funcionalidad
🔧
fix/
Corrección de errores
📦
git stash
Cambios en pausa
5

🚫 .gitignore

Qué no versionar — proteger secretos y mantener limpio el repo

.gitignore — EJEMPLO REAL
# 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

  • ✓.env y 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

🔒
.env
Nunca hagas commit
📦
node_modules
Se instala mediante package.json
🌐
gitignore.io
Genera una plantilla automática
🌍
Ignore global
~/.gitignore_global
6

🤖 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.

CONVENTIONAL COMMITS — FORMATO ESTÁNDAR
# 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"
🤖
Automatizado
Claude hace el commit
📝
Convencional
feat/fix/docs/chore
🔍
Auditable
Historial legible
⚡
Semántico
Changelog automático

🎯 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 con git 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→