Il problema con --force
Un semplice git push --force sovrascrive il branch remoto con qualsiasi cosa si abbia localmente.
Cosa fa --force-with-lease
git push --force-with-lease origin feature/login
Un esempio pratico
git rebase origin/main
git push --force
git push --force-with-lease
Specificare lo SHA atteso
git push --force-with-lease=feature/login:abc123 origin feature/login
Renderlo il default
git config --global alias.pf 'push --force-with-lease'
git config --global alias.force-push '!echo Use git pf instead'
La trappola del fetch
git fetch
git log origin/feature/login
git push --force-with-lease
Alternativa piu recente: --force-if-includes
git push --force-with-lease --force-if-includes
Quando devi usare --force
Riscrivere la storia su un branch che si sa essere proprio in esclusiva, o dopo un evento distruttivo come segreti trapelati.