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

El problema con --force

Un git push --force simple sobrescribe el branch remoto con lo que tengas localmente. Si un compañero hizo push entre tu último fetch y tu push, sus commits se destruyen silenciosamente.

Qué hace --force-with-lease

git push --force-with-lease origin feature/login

Un ejemplo trabajado

git rebase origin/main
# Mientras tanto, un compañero hizo push
git push --force                # sobrescribe su commit silenciosamente
git push --force-with-lease     # rechazado:
# ! [rejected] feature/login -> feature/login (stale info)

Especificar el SHA esperado

git push --force-with-lease=feature/login:abc123 origin feature/login

Hacerlo el predeterminado

git config --global alias.pf 'push --force-with-lease'

La trampa del fetch

# MÁS SEGURO:
git fetch
git log origin/feature/login    # mira de verdad
git push --force-with-lease

Alternativa más nueva: --force-if-includes

git push --force-with-lease --force-if-includes