Saltar al contenido
Underc0de /foro

Cheatsheet: Cheatsheet de Git: del primer commit al control de historial avanzado

$ cat cheatsheet/git

Referencia rápida de Git con comandos esenciales y avanzados para configurar, versionar, ramificar, colaborar con remotos, deshacer errores y proteger tus repositorios de filtraciones de secretos.

⬇ Descargar PDFGratis con tu cuenta de Underc0de · ya tengo cuenta

Configuración inicial

Código: bash
git config --global user.name "Tu Nombre"    # Define el nombre del autor de los commits
git config --global user.email "[email protected]"    # Define el correo del autor de los commits
git config --global init.defaultBranch main    # Usa main como rama por defecto en repos nuevos
git config --global core.editor "nano"    # Elige el editor para mensajes de commit
git config --list --show-origin    # Muestra toda la configuración y su archivo de origen

Crear repositorios y ver estado

Código: bash
git init    # Inicializa un repositorio en la carpeta actual
git clone https://github.com/usuario/repo.git    # Clona un repositorio remoto completo
git clone --depth 1 https://github.com/usuario/repo.git    # Clona solo el último commit, más rápido
git status    # Muestra archivos modificados, preparados y sin seguimiento
git status -s    # Estado en formato corto

Preparar cambios y hacer commits

Código: bash
git add archivo.txt    # Agrega un archivo al área de preparación
git add -p    # Elige interactivamente qué fragmentos preparar
git commit -m "Mensaje descriptivo"    # Crea un commit con lo preparado
git commit --amend    # Modifica el último commit (mensaje o contenido)
git restore archivo.txt    # Descarta cambios locales no preparados del archivo
git restore --staged archivo.txt    # Quita el archivo del área de preparación
git rm --cached archivo.txt    # Deja de versionar el archivo sin borrarlo del disco

Historial y diferencias

Código: bash
git log --oneline --graph --all    # Historial compacto con gráfico de todas las ramas
git log -p archivo.txt    # Historial de un archivo con sus cambios
git diff    # Diferencias no preparadas respecto al índice
git diff --staged    # Diferencias preparadas respecto al último commit
git show HEAD    # Muestra detalles y cambios del último commit
git blame archivo.txt    # Indica qué commit y autor modificó cada línea
git log -S "texto"    # Busca commits que agregaron o quitaron ese texto

Ramas y fusiones

Código: bash
git branch    # Lista ramas locales
git switch -c nueva-rama    # Crea una rama y se cambia a ella
git switch main    # Cambia a la rama main
git merge nueva-rama    # Fusiona nueva-rama en la rama actual
git merge --abort    # Cancela una fusión con conflictos
git rebase main    # Reaplica commits de la rama actual sobre main
git branch -d nueva-rama    # Borra una rama ya fusionada

Trabajo con remotos

Código: bash
git remote -v    # Lista remotos configurados con sus URLs
git remote add origin https://github.com/usuario/repo.git    # Agrega un remoto llamado origin
git fetch --prune    # Descarga cambios y limpia ramas remotas eliminadas
git pull --rebase    # Trae cambios y rebasea tus commits locales encima
git push -u origin main    # Sube main y establece seguimiento con el remoto
git push --force-with-lease    # Fuerza push solo si nadie subió cambios nuevos
git push origin --delete nueva-rama    # Borra una rama en el remoto

Guardar temporalmente y deshacer

Código: bash
git stash push -m "trabajo en curso"    # Guarda cambios sin commitear en una pila
git stash list    # Lista los stashes guardados
git stash pop    # Restaura el último stash y lo elimina de la pila
git reset --soft HEAD~1    # Deshace el último commit conservando cambios preparados
git reset --hard HEAD~1    # Elimina el último commit y sus cambios locales
git revert HEAD    # Crea un commit que invierte el último, sin reescribir historia
git reflog    # Historial de movimientos de HEAD, ideal para recuperar commits

Herramientas avanzadas

Código: bash
git rebase -i HEAD~3    # Reordena, edita o combina los últimos tres commits
git cherry-pick abc1234    # Aplica un commit específico en la rama actual
git bisect start    # Inicia búsqueda binaria del commit que introdujo un bug
git bisect good v1.0    # Marca una versión conocida como correcta
git tag -a v1.0 -m "Versión 1.0"    # Crea una etiqueta anotada para una versión
git worktree add ../hotfix hotfix    # Abre otra rama en un directorio de trabajo separado
git clean -nd    # Simula qué archivos y carpetas sin seguimiento se borrarían

Seguridad e integridad del repositorio

Código: bash
git log --all -p -S "password"    # Audita tu historial buscando contraseñas commiteadas
git commit -S -m "Commit firmado"    # Firma el commit con tu clave GPG
git config --global commit.gpgsign true    # Firma todos los commits automáticamente
git verify-commit HEAD    # Verifica la firma del último commit
git log --show-signature -1    # Muestra la firma del último commit en el log
git fsck    # Comprueba integridad y objetos corruptos del repositorio
git filter-repo --path secreto.env --invert-paths    # Elimina un archivo de todo el historial (requiere git-filter-repo)
curl -I http://127.0.0.1/.git/HEAD    # Verifica si tu servidor expone la carpeta .git

Para tener en cuenta

reset --hard, rebase y push --force reescriben historia: evitalos en ramas compartidas y preferí revert o --force-with-lease. Si commiteaste una credencial, rotala de inmediato; limpiar el historial no basta porque pudo haber sido clonada. Usá .gitignore para secretos y bloqueá el acceso web a .git en tus servidores; las auditorías de repos ajenos solo con autorización por escrito.

Redactado con el asistente Underc0de IA. Actualizado el 14/11/2026. ¿Ves un error? Contanos en el foro.

Grupo de WhatsApp