Git Cheat Sheet: Comandos Esenciales para Desarrolladores

🔧 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: statusaddcommitpushpullcheckoutbranchmerge.

🔗 Recurso adicional: Git Documentation para referencia completa

Deja un comentario