Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > Once Francesco's patch is also applied (or some version thereof) you can > then set push.AlwaysForceWithElease to make --force mean > --force-with-lease, which is disabled by default. > > I think this is really crappy UX design. Now in some future version of > Git I need to set a config option *and* type a longer option name to get > behavior that's an improvement over --force. After thinking about this a bit longer, I changed my mind. I do not think a configuration option that turns "push --force" with anything but "unconditionally force, I mean it" is acceptable; otherwise use of "--force" as the last resort that always does what the option means will be broken, and I do not think you can ask everybody who has scripts to do so to temporarily disable the configuration in them. What we could do is to improve the "--force-with-lease" that does not say what exact object should be there at the remote for the non-ff push to go through. In another thread there was a discussion to improve the logic to ignore remote-tracking branch and instead use the reflog of the _source_ of the push, and I think that is a lot saner and safer heuristic than what we currently has. After that happens, we probably could give it an even shorter synonym to the option. But even then, it is unwise to use "--force" as that shorter synonym. Thanks.