🔧 Configuración Inicial
# Configurar nombre de usuario
git config --global user.name "Tu Nombre"
# Configurar email
git config --global user.email "tu@email.com"
# Configurar editor por defecto
git config --global core.editor "code --wait"
# Ver configuración actual
git config --list
# Configurar aliases útiles
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
📁 Repositorios
# Inicializar repositorio local
git init
# Clonar repositorio remoto
git clone <url-del-repositorio>
# Ver información del repositorio
git remote -v
# Agregar remote
git remote add origin <url>
# Cambiar URL de remote
git remote set-url origin <nueva-url>
🔄 Flujo Básico
# Ver estado actual
git status
# Agregar archivo específico
git add archivo.txt
# Agregar todos los cambios
git add .
# Agregar archivos por patrón
git add *.js
# Hacer commit con mensaje
git commit -m "Mensaje descriptivo"
# Hacer commit con staged y unstaged changes
git commit -a -m "Mensaje"
# Enviar cambios al remote
git push origin main
# Traer cambios del remote
git pull origin main
# Traer cambios sin hacer merge
git fetch origin
🌿 Ramas (Branches)
# Ver todas las ramas
git branch
# Ver ramas remotas
git branch -r
# Ver todas las ramas (locales y remotas)
git branch -a
# Crear nueva rama
git branch nombre-rama
# Cambiar a otra rama
git checkout nombre-rama
# Crear y cambiar a nueva rama
git checkout -b nombre-rama
# Renombrar rama actual
git branch -m nuevo-nombre
# Eliminar rama local
git branch -d nombre-rama
# Eliminar rama remota
git push origin --delete nombre-rama
# Fusionar rama en actual
git merge nombre-rama
# Reorganizar commits sobre otra rama
git rebase main
📊 Historial y Logs
# Ver historial completo
git log
# Ver historial compacto
git log --oneline
# Ver historial con gráfico
git log --oneline --graph --all
# Ver historial de archivo específico
git log --follow archivo.txt
# Ver cambios específicos de un commit
git show <hash-del-commit>
# Ver quién modificó cada línea
git blame archivo.txt
# Ver diferencias entre working y staging
git diff
# Ver diferencias entre staging y último commit
git diff --staged
# Ver diferencias entre commits
git diff <commit1> <commit2>
🔄 Deshacer Cambios
# Eliminar archivo del staging area
git reset HEAD archivo.txt
# Eliminar último commit (mantener cambios)
git reset --soft HEAD~1
# Eliminar último commit y cambios
git reset --hard HEAD~1
# Revertir un commit (crear commit inverso)
git revert <hash-del-commit>
# Descartar cambios en archivo
git checkout -- archivo.txt
# Descartar todos los cambios locales
git reset --hard HEAD
# Modificar mensaje de último commit
git commit --amend -m "Nuevo mensaje"
🌐 Trabajo con Remotos
# Ver información de remotos
git remote show origin
# Traer cambios de todos los remotos
git remote update
# Enviar rama a remote por primera vez
git push -u origin nombre-rama
# Eliminar rama remota
git push origin --delete nombre-rama
# Sincronizar todas las ramas remotas
git fetch --all
# Limpiar ramas remotas eliminadas
git remote prune origin
🔍 Búsqueda y Filtrado
# Buscar en commits
git log --grep="texto a buscar"
# Buscar por autor
git log --author="nombre autor"
# Buscar commits que modificaron archivo
git log -- archivo.txt
# Buscar commits en rango de fechas
git log --since="2025-01-01" --until="2025-12-31"
# Buscar código en commits
git log -S "texto en código"
🛠️ Stashing (Guardar Cambios Temporalmente)
# Guardar cambios actuales
git stash
# Guardar cambios con mensaje
git stash save "Descripción de cambios"
# Ver lista de stashes
git stash list
# Aplicar último stash
git stash pop
# Aplicar stash específico
git stash apply stash@{0}
# Eliminar stash
git stash drop stash@{0}
# Eliminar todos los stashes
git stash clear
🏷️ Etiquetas (Tags)
# Crear tag ligero
git tag v1.0.0
# Crear tag anotado
git tag -a v1.0.0 -m "Versión 1.0.0"
# Ver todos los tags
git tag
# Ver información de tag
git show v1.0.0
# Enviar tags al remote
git push origin --tags
# Eliminar tag local
git tag -d v1.0.0
# Eliminar tag remoto
git push origin --delete v1.0.0
🐛 Resolución de Conflictos
# Ver archivos en conflicto
git status
# Marcar conflicto como resuelto
git add archivo-resuelto.txt
# Continuar después de resolver conflictos
git commit
# Abortar merge/rebase actual
git merge --abort
git rebase --abort
# Ver diferencias en conflicto
git diff --name-only --diff-filter=U
🔧 Configuración Útil
# Ignorar cambios en permisos de archivos
git config core.filemode false
# Configurar herramienta de merge
git config merge.tool vscode
# Configurar herramienta de diff
git config diff.tool vscode
# Colorear salida
git config --global color.ui auto
# Configurar autocrlf (Windows)
git config --global core.autocrlf true
# Configurar autocrlf (Mac/Linux)
git config --global core.autocrlf input
📝 .gitignore Común
# Dependencies
node_modules/
vendor/
# Build outputs
dist/
build/
*.exe
*.dll
# Environment files
.env
.env.local
.env.*.local
# IDE files
.vscode/
.idea/
*.swp
*.swo
# OS files
.DS_Store
Thumbs.db
# Logs
*.log
logs/
# Cache
.cache/
*.cache
🚀 Atajos y Aliases Útiles
# Alias recomendados para .gitconfig
[alias]
st = status
co = checkout
br = branch
cm = commit
cp = cherry-pick
df = diff
lg = log -p
lol = log --graph --oneline --decorate
lola = log --graph --oneline --decorate --all
ls = ls-files
sh = show
unstage = reset HEAD --
last = log -1 HEAD
visual = !gitk
amend = commit --amend
undo = reset --soft HEAD~1
cleanup = "!git branch --merged | grep -v '\\*\\|master\\|main\\|develop' | xargs -n 1 git branch -d"
📋 Flujo de Trabajo Rápido
# 1. Iniciar nuevo proyecto
git init
git add .
git commit -m "Initial commit"
git remote add origin <url>
git push -u origin main
# 2. Trabajar en nueva feature
git checkout -b feature/nueva-funcionalidad
# ... hacer cambios ...
git add .
git commit -m "feat: Add new functionality"
git push origin feature/nueva-funcionalidad
# 3. Integrar cambios
git checkout main
git pull origin main
git merge feature/nueva-funcionalidad
git push origin main
git branch -d feature/nueva-funcionalidad
💡 Tip Pro: Guarda esta cheat sheet como referencia rápida. Los comandos más usados son: status, add, commit, push, pull, checkout, branch, merge.
🔗 Recurso adicional: Git Documentation para referencia completa