On Mon, Jul 12, 2021 at 12:55 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Alex Henrie <alexhenrie24@xxxxxxxxx> writes: > > > Sorry, I misspoke. I was thinking of the case where fast-forwarding is > > impossible. > > When we cannot fast-forward (i.e. we have our own development that > is not in the tip of their history), > > --ff-only would cause the operation fail > --ff would become no-op (as it merely allows fast-forwarding) > --no-ff would become no-op (as it merely forbids fast-forwarding) > > and the latter two case, we'd either merge or rebase (with possibly > specified mode like --preserve-merges). I thought the current > documentation is already fairly clear on this point? git pull's --no-ff is documented to "create a merge commit in all cases", and thus as worded, seems incompatible with rebasing to me. Treating --no-ff as a no-op when we cannot fast-forward (i.e. allowing rebasing to happen) could be seen as a backwards incompatible change at this point. Having --ff be compatible with rebasing works because the end result will be the same as described in the existing documentation. > > If fast-forwarding is possible, --ff-only already effectively > > implies --no-rebase, and we might want to make that explicit in > > the documentation. > > When we fast-forward (i.e. their history is descendant from ours, > and the user did not give --no-ff), it does not matter if it is done > using the merge backend, the rebase backend, or by the "git pull" > wrapper. The end user does not care. The end result is that the tip > of the branch now points at the tip of the history we pulled from > the other side and that is all what matters. > > So, from that point of view, I do not think we want to say rebase or > merge or anything else for such a case in the documentation. All three of --ff, --no-ff, and --ff-only come from Documentation/merge-options.txt and are shared between git-merge and git-pull. The description of each of those items mentions "merges" or "merging" at least once in every sentence.