No importa si escribes Python, JavaScript, Rust o COBOL — si trabajas en software, usas Git. Es la herramienta que más vas a usar en tu carrera, y sin embargo, muchos desarrolladores solo conocen git add . y git push.
En este artículo te enseño los comandos de Git que realmente necesitas dominar, organizados de básico a avanzado, con ejemplos prácticos que puedes usar hoy mismo.
Configuración inicial (solo una vez)
Antes de empezar, configura tu identidad:
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
Esto es lo que aparecerá en cada commit que hagas. Si trabajas con diferentes emails (personal vs trabajo), puedes omitir --global y configurarlo por repositorio.
Bonus: Configura un editor por defecto para los mensajes de commit:
git config --global core.editor "code --wait" # VS Code
El flujo básico diario
Iniciar un repositorio
git init # Crear un nuevo repo
git clone <url> # Clonar uno existente
Ver el estado actual
git status # Ver archivos modificados
git status -s # Versión corta
Agregar cambios al staging
git add archivo.js # Agregar un archivo específico
git add . # Agregar todo
git add -p # Agregar interactivamente (muy útil)
El flag -p (patch) te permite revisar cada cambio antes de agregarlo. Úsalo cuando tengas muchos cambios y quieras hacer commits más pequeños y específicos.
Hacer commit
git commit -m "feat: agregar login" # Commit con mensaje
git commit -am "fix: corregir typo" # Add + commit (solo archivos tracked)
git commit --amend # Modificar el último commit
Pro tip: Usa Conventional Commits para mensajes claros:
feat:nueva funcionalidadfix:corrección de bugdocs:documentaciónrefactor:cambio de código sin cambiar funcionalidad
Subir cambios
git push # Subir al remote
git push -u origin main # Primera vez (establece upstream)
git push --force-with-lease # Force push seguro
⚠️ Nunca uses git push --force en ramas compartidas. Si necesitas forzar, usa --force-with-lease que verifica que nadie más haya subido cambios.
Trabajando con ramas
Las ramas son la base del trabajo en equipo. Aprende a usarlas bien.
Crear y cambiar de rama
git branch # Ver ramas locales
git branch -a # Ver todas (incluye remotas)
git branch feature/login # Crear rama
git checkout feature/login # Cambiar a la rama
git checkout -b feature/login # Crear y cambiar en un comando
git switch feature/login # Alternativa moderna a checkout
git switch -c feature/login # Crear y cambiar (moderno)
Fusionar ramas
git checkout main # Cambiar a main
git merge feature/login # Fusionar feature/login en main
git merge --no-ff feature/login # Merge sin fast-forward (mantiene historial)
Eliminar ramas
git branch -d feature/login # Eliminar rama local (si ya fue mergeada)
git branch -D feature/login # Eliminar forzado
git push origin --delete feature/login # Eliminar rama remota
Comandos de rescate (estos te salvarán la vida)
Ver el historial
git log # Historial completo
git log --oneline # Una línea por commit
git log --oneline -10 # Últimos 10 commits
git log --graph --oneline --all # Visualizar ramas
Deshacer cambios locales
git checkout -- archivo.js # Descartar cambios en un archivo
git restore archivo.js # Alternativa moderna
git restore --staged archivo.js # Quitar del staging (sin perder cambios)
Stash: guardar cambios temporalmente
Tienes cambios sin commitear pero necesitas cambiar de rama urgentemente:
git stash # Guardar cambios
git stash push -m "wip: login" # Guardar con mensaje
git stash list # Ver stashes guardados
git stash pop # Recuperar el último stash
git stash apply stash@{2} # Aplicar un stash específico
git stash drop # Eliminar el último stash
Reset: volver atrás en el tiempo
git reset --soft HEAD~1 # Deshacer último commit (mantiene cambios en staging)
git reset --mixed HEAD~1 # Deshacer último commit (mantiene cambios sin staging)
git reset --hard HEAD~1 # Deshacer último commit (BORRA todo)
⚠️ Cuidado con --hard — los cambios se pierden permanentemente.
Revert: deshacer un commit de forma segura
A diferencia de reset, revert crea un nuevo commit que deshace los cambios:
git revert abc123 # Revertir un commit específico
git revert HEAD # Revertir el último commit
Usa revert cuando el commit ya fue pusheado y compartido con el equipo.
Ver diferencias
git diff # Cambios no staged
git diff --staged # Cambios en staging
git diff main..feature/login # Diferencia entre ramas
git diff HEAD~3 # Cambios de los últimos 3 commits
Bonus: Aliases para ser más productivo
Agrega estos aliases a tu configuración:
git config --global alias.st "status -s"
git config --global alias.co "checkout"
git config --global alias.br "branch"
git config --global alias.cm "commit -m"
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.undo "reset --soft HEAD~1"
Ahora puedes usar:
git st # En lugar de git status -s
git co main # En lugar de git checkout main
git lg # Log bonito con gráfico
git undo # Deshacer último commit
Resumen: Los 10 comandos que más usarás
git status— Ver qué cambiógit add -p— Agregar cambios selectivamentegit commit -m ""— Commitear con mensajegit push— Subir cambiosgit pull— Traer cambios del remotegit checkout -b— Crear y cambiar de ramagit merge— Fusionar ramasgit stash— Guardar cambios temporalmentegit log --oneline— Ver historialgit diff— Ver diferencias
Conclusión
Git parece intimidante al principio, pero una vez que dominas estos comandos, se vuelve una segunda naturaleza. Mi consejo: no intentes memorizar todo. Usa esta guía como referencia y practica con proyectos reales.
Si algo sale mal (y saldrá mal), recuerda: casi todo en Git es reversible. Respira, busca el comando correcto, y sigue adelante.
¿Tienes algún comando favorito que no mencioné? Compártelo en mis redes.
¿Te fue útil esta guía? Compártela con ese amigo que todavía le tiene miedo a Git. Y sígueme para más contenido sobre desarrollo y herramientas.