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

Definir "merge malo"

Un merge malo puede significar: mergeaste el branch equivocado, resolviste conflictos incorrectamente, el merge introdujo una regresión, o mergeaste antes de completarse la review.

Caso 1: aún no pusheado

git reset --hard ORIG_HEAD

Caso 2: pusheado, otros no han hecho pull

git reset --hard ORIG_HEAD
git push --force-with-lease

Caso 3: pusheado, otros han hecho pull

git revert -m 1 <merge-sha>

Re-mergear tras un revert

git revert <revert-sha>
git checkout feature/login
git rebase main
git checkout main
git merge feature/login

Caso 4: mala resolución de conflicto

git checkout main
git commit -m "Fix conflict resolution from merge of feature/login"

Caso 5: mergeaste el branch equivocado

git reset --hard ORIG_HEAD
git merge correct-branch

Inspeccionar un merge

git log -1 --format=fuller --stat HEAD
git show -m HEAD
git diff HEAD^1 HEAD
git diff HEAD^2 HEAD

Evitar merges malos

  • Siempre usa --no-ff en branches de larga vida.
  • Configura CI para correr en el resultado del merge.
  • Usa git mergetool para conflictos complicados.
  • Ejecuta tests inmediatamente después de cada merge.

El kit de recuperación

  • ORIG_HEAD - establecido automáticamente antes de merges, resets, rebases.
  • git reflog - registra cada movimiento de HEAD.
  • git revert -m - deshacer un merge creando un nuevo commit.
  • git push --force-with-lease - force push más seguro.