Por Anónimo (no verificado) , 29 Abril 2026

Para, respira, no hagas push

La primera regla de los desastres de Git: no lo empeores. La mayoría de los "desastres" son recuperables porque Git es conservador.

Snapshot antes de recuperar

git tag panic-snapshot
cp -r .git ~/git-backup-$(date +%s)

Desastres comunes y arreglos

Mal reset

git reflog
git reset --hard HEAD@{1}

Mal rebase

git reflog
git reset --hard ORIG_HEAD

Branch eliminado

git reflog --all
git branch recovered <sha>

Force-push sobre un compañero

git push --force-with-lease <their-branch-tip>

Secretos commiteados

git filter-repo --replace-text passwords.txt
git push --force --all
git push --force --tags

HEAD desacoplado con nuevos commits

git checkout main
git branch rescued <sha>

Repo corrupto

git fsck --full
git unpack-objects < .git/objects/pack/pack-XXX.pack

Cheat sheet del reflog

git reflog
git reflog show feature/x
git log -g
git fsck --lost-found

Evitar repeticiones

  • Usa --force-with-lease en lugar de --force.
  • Configura pull.ff = only.
  • Configura expiración larga del reflog: git config gc.reflogExpire 365.days.
  • Pushea branches feature como backups.
  • Ejecuta gitleaks en pre-commit y CI.

Practicar la recuperación

La mejor preparación es un simulacro deliberado de desastre.