The old thread "Pull is Mostly Evil" [1] came to haunt us back again. The main solution--reject non-fast-forward merges by default--seems to have lost traction (again). There are multiple approaches floating around, but no clear path forward. This patch series attempts to fix as much as possible of the current situation without committing to any particular solution. It does: 1. Improve the current documentation 2. Improve the current default warning 3. Minimize the instances where we display the default warning 4. Add a --merge option 5. Improve the error message with --ff-only 6. Fix the behavior of the warning with --ff And tentatively (and this should be the only controversial change): 7. Change the semantics of -ff-only It does not: * Introduce the suggested pull.mode * Change the current default (still --ff) It is not a complete solution, but should improve the current situation. [1] https://lore.kernel.org/git/5363BB9F.40102@xxxxxxxxxxx/ Felipe Contreras (14): doc: pull: explain what is a fast-forward pull: improve default warning pull: refactor fast-forward check pull: cleanup autostash check pull: trivial cleanup pull: move default warning pull: display default warning only when non-ff pull: trivial whitespace style fix pull: introduce --merge option pull: add proper error with --ff-only tentative: pull: change the semantics of --ff-only pull: show warning with --ff test: merge-pull-config: trivial cleanup test: pull-options: revert unnecessary changes Documentation/git-pull.txt | 24 ++++++++- builtin/pull.c | 98 ++++++++++++++++++++++-------------- t/t5520-pull.sh | 62 +++++++++++++++++++++++ t/t5521-pull-options.sh | 22 ++++---- t/t7601-merge-pull-config.sh | 35 +++++++------ 5 files changed, 174 insertions(+), 67 deletions(-) -- 2.29.2