I have also thought about this. I'd suggest a config option "push.forceFlagBehavior" that would allow to configure the behavior, one of: - "default" / "overwrite", which is currently -f, - "lease" for --force-with-lease, - "lease-includes" for --force-with-lease --force-if-includes, - possibly others. Then, upon `git push -f`, the config option would be consulted to determine the behavior. To get the default behavior, `-f -f` or `-F` could be used.