Force pushing is not bad or wrong. It's part of the every day workflow of developers. But it must be used with caution. A force push gone wrong can overwrite existing work. Fortunately,
git provides us with an option to force push responsibly.
git push --force-with-lease
git push --force,
--force-with-lease will overwrite commits and git history. However,
--force-with-lease will not overwrite any new commits a developer didn't hadn't pulled before.
Imagine you are about to use
--force-with-lease to a branch. If another developer committed new work to that branch that you hadn't pulled, an attempt to
git push --force-with-lease that branch will fail.
Always force push with lease
A good way of avoiding git havoc is by always force pushing with
--force-with-lease. An easy and convenient way to do this is with a git alias.
My alias is
git pushf. I added it to my global git config with.
git config --global alias.pushf 'push --force-with-lease'
With that alias in place, you can use
git pushf to force push your work responsibly. Your coworkers and yourself will thank you for it.