Zawut CheatSheet 🚀 Tu centro de referencia rápida

Git & GitHub CheatSheet

Referencia rápida para control de versiones - Comandos esenciales, flujos de trabajo y ejemplos prácticos

CONFIGURACIÓN INICIAL

CONFIGURACIÓN GLOBAL

git config --global user.name "Tu Nombre"
# Configurar nombre para commits

git config --global user.email "tu@email.com"
# Configurar email para commits

git config --global init.defaultBranch main
# Establecer rama principal como "main"

git config --global core.editor "code --wait"
# Configurar VS Code como editor por defecto

VER CONFIGURACIÓN

git config --list
# Ver todas las configuraciones

git config user.name
# Ver nombre configurado

git config user.email
# Ver email configurado
Ejemplo de configuración inicial:
# Configurar Git por primera vez
git config --global user.name "Ana García"
git config --global user.email "ana@ejemplo.com"
git config --global init.defaultBranch main

# Verificar configuración
git config --list

REPOSITORIOS

CREAR Y CLONAR REPOSITORIOS

git init
# Inicializar nuevo repositorio LOCAL

git clone https://github.com/usuario/repo.git
# Clonar repositorio existente de GitHub

git clone https://github.com/usuario/repo.git mi-proyecto
# Clonar y renombrar carpeta local

CONECTAR CON REMOTO

git remote add origin https://github.com/usuario/repo.git
# Conectar repositorio local con GitHub

git remote -v
# Ver URLs de repositorios remotos

git remote set-url origin https://github.com/usuario/nuevo-repo.git
# Cambiar URL del repositorio remoto
Ejemplo: Crear proyecto desde cero y subir a GitHub
# 1. Crear carpeta y archivos del proyecto
mkdir mi-proyecto
cd mi-proyecto
# ... crear archivos ...

# 2. Inicializar repositorio Git
git init
git add .
git commit -m "feat: proyecto inicial"

# 3. Conectar con GitHub (crear repo vacío primero en GitHub)
git remote add origin https://github.com/tu-usuario/mi-proyecto.git
git push -u origin main

FLUJO DE TRABAJO DIARIO

COMANDOS ESENCIALES

git status
# Ver estado de archivos modificados/agregados/eliminados

git add .
# Preparar TODOS los archivos para commit

git add archivo.html
# Preparar archivo ESPECÍFICO para commit

git commit -m "mensaje descriptivo"
# Guardar cambios LOCALMENTE con descripción

git push origin main
# Subir commits al repositorio REMOTO (GitHub)

git pull origin main
# Descargar cambios del repositorio remoto

GITIGNORE

# Crear archivo .gitignore en raíz del proyecto
node_modules/
.env
*.log
.DS_Store
dist/
build/
Ejemplo: Flujo de trabajo típico
# 1. Actualizar repositorio local
git pull origin main

# 2. Trabajar en los cambios...
# (modificar archivos, crear nuevos, etc.)

# 3. Revisar cambios
git status
git diff

# 4. Preparar y guardar cambios
git add .
git commit -m "feat: agregar funcionalidad de login"

# 5. Subir cambios a GitHub
git push origin main

TRABAJO CON RAMAS

CREAR Y CAMBIAR DE RAMA

git branch
# Listar todas las ramas (* = rama actual)

git branch nueva-rama
# Crear nueva rama

git checkout nombre-rama
# Cambiar a otra rama

git checkout -b nueva-rama
# Crear y cambiar a nueva rama

git switch nombre-rama
# Alternativa moderna para cambiar de rama

FUSIONAR RAMAS

git merge nombre-rama
# Fusionar rama actual con otra rama

git branch -d nombre-rama
# Eliminar rama local (ya fusionada)

git branch -D nombre-rama
# Forzar eliminación de rama local

git push origin --delete nombre-rama
# Eliminar rama remota
Ejemplo: Trabajar con feature branch
# 1. Crear rama para nueva funcionalidad
git checkout -b feature/nuevo-componente

# 2. Trabajar en la funcionalidad...
# (hacer commits en la rama feature)

# 3. Cambiar a main y actualizar
git checkout main
git pull origin main

# 4. Fusionar la funcionalidad
git merge feature/nuevo-componente

# 5. Subir cambios y limpiar
git push origin main
git branch -d feature/nuevo-componente

INFORMACIÓN Y CONSULTAS

HISTORIAL Y COMPARACIONES

git log
# Ver historial de commits (detallado)

git log --oneline
# Ver historial de commits (resumido)

git log --graph --oneline
# Ver historial con gráfico de ramas

git show commit-hash
# Ver cambios específicos de un commit

VER CAMBIOS

git diff
# Ver diferencias en archivos NO guardados

git diff --staged
# Ver diferencias en archivos PREPARADOS

git diff commit1 commit2
# Comparar entre dos commits

git blame archivo.txt
# Ver quién modificó cada línea
Ejemplo: Investigar cambios recientes
# Ver historial reciente
git log --oneline -5
# (muestra últimos 5 commits)

# Ver cambios del último commit
git show

# Ver qué se va a commitear
git diff --staged

# Ver estado actual
git status

DESHACER CAMBIOS

MODIFICAR COMMITS

git commit --amend
# Modificar el último commit (mensaje o archivos)

git reset --soft HEAD~1
# Deshacer último commit, mantener cambios en staging

git reset --hard HEAD~1
# Deshacer último commit y ELIMINAR cambios

git revert commit-hash
# Crear nuevo commit que deshace cambios específicos

DESCARTAR CAMBIOS

git restore archivo.txt
# Descarta cambios en archivo (no guardados)

git restore --staged archivo.txt
# Quitar archivo del área de staging

git clean -fd
# Eliminar archivos no rastreados

git checkout -- archivo.txt
# Forma antigua de descartar cambios
Ejemplo: Corregir error en último commit
# 1. Nos damos cuenta que olvidamos un archivo
git add archivo-olvidado.js

# 2. Agregarlo al último commit
git commit --amend
# (se abre editor para modificar mensaje si es necesario)

# 3. Forzar push si ya se había subido
git push --force-with-lease origin main
# ¡CUIDADO! Solo si trabajas solo en la rama

BUENAS PRÁCTICAS

MENSAJES DE COMMIT CONVENCIONALES

feat: agregar funcionalidad de búsqueda
# Nueva funcionalidad

fix: corregir error en cálculo de total
# Corrección de error

docs: actualizar documentación API
# Cambios en documentación

style: formatear código según guía
# Cambios de formato (sin afectar funcionalidad)

refactor: reorganizar módulo de autenticación
# Reestructurar código sin cambiar funcionalidad

test: agregar tests para componente Button
# Agregar o modificar tests

chore: actualizar dependencias
# Tareas de mantenimiento

CONSEJOS ESENCIALES

# 1. Hacer commits atómicos (un cambio por commit)
# 2. Escribir mensajes claros y descriptivos
# 3. Usar .gitignore para archivos temporales/sensibles
# 4. Hacer pull antes de push cuando trabajas en equipo
# 5. Usar branches para features nuevas
# 6. Revisar cambios con git diff antes de commitear
Ejemplo: Flujo profesional completo
# 1. Actualizar main
git checkout main
git pull origin main

# 2. Crear rama para feature
git checkout -b feat/user-profile

# 3. Trabajar en la feature
# ... hacer cambios ...
git add .
git commit -m "feat: agregar componente UserProfile"
git commit -m "style: ajustar responsive del perfil"

# 4. Fusionar con main
git checkout main
git pull origin main
git merge feat/user-profile

# 5. Subir y limpiar
git push origin main
git branch -d feat/user-profile