It’s always better to use the
--force-with-lease option over
force pushing to a remote branch. However, it’s important to remember that
--force-with-lease isn’t magic.
--force-with-lease simply checks your local remote branch
(./.git/refs/remotes/origin/<branch>) against the actual remote branch. This
means that the following:
git fetch git push --force-with-lease
or if you even just
git pull on a different branch (this is essentially the
git fetch) will behave the same as a
--force push and nuke any changes
made by another developer.
Here’s an example of a common workflow that renders
to prevent the push:
# Changes made by another developer are present but not in your local remote refs. # You want to rebase your changes. git checkout master git pull # causes local refs to update git checkout - git rebase master # Now this acts the same as --force and overwrites changes made by the other developer. git push --force-with-lease