Le problème avec --force
Un git push --force simple écrase la branche distante. Si un coéquipier a poussé entre votre dernier fetch et votre push, ses commits sont silencieusement détruits.
Ce que fait --force-with-lease
git push --force-with-lease origin feature/login
Un exemple travaillé
git rebase origin/main
git push --force # écrase silencieusement
git push --force-with-lease # rejeté
Spécifier le SHA attendu
git push --force-with-lease=feature/login:abc123 origin feature/login
En faire le défaut
git config --global alias.pf 'push --force-with-lease'
Le piège du fetch
git fetch
git log origin/feature/login
git push --force-with-lease
Alternative plus récente : --force-if-includes
git push --force-with-lease --force-if-includes