I tried to compare --force-rebase VS --no-ff for the following repository: http://jmp.sh/E7TRjcL There's no difference in the resulf of: git rebase --force-rebase 54a4 git rebase --no-ff 54a4 (rebases all 3 commits of feature) Also, there's no difference in interactive mode: git rebase --force-rebase -i 54a4 git rebase --no-ff -i 54a4 (picks all 3 commits of feature) Is there a case where --no-ff differs from --force-rebase? --- Best Regards, Ilya Kantor On Wed, May 9, 2018 at 10:27 PM, Marc Branchaud <marcnarc@xxxxxxxxxxx> wrote: > On 2018-05-09 02:21 PM, Stefan Beller wrote: >> >> +cc Marc and Johannes who know more about rebase. >> >> On Wed, May 9, 2018 at 9:01 AM, Ilya Kantor <iliakan@xxxxxxxxx> wrote: >>> >>> Right now in "git help rebase" for --no-ff: >>> "Without --interactive, this is a synonym for --force-rebase." >>> >>> But *with* --interactive, is there any difference? >> >> >> I found >> >> https://code.googlesource.com/git/+/b499549401cb2b1f6c30d09681380fd519938eb0 >> from 2010-03-24 > > > In the original discussion around this option [1], at one point I proposed > teaching rebase--interactive to respect --force-rebase instead of adding a > new option [2]. Ultimately --no-ff was chosen as the better user interface > design [3], because an interactive rebase can't be "forced" to run. > > At the time, I think rebase--interactive only recognized --no-ff. That > might have been muddled a bit in the migration to rebase--helper.c. > > Looking at it now, I don't have a strong opinion about keeping both options > or deprecating one of them. > > M. > > [1] https://public-inbox.org/git/4B9FD9C1.9060200@xxxxxxxxxxx/t/ > [2] > https://public-inbox.org/git/1269361187-31291-1-git-send-email-marcnarc@xxxxxxxxxxx/ > [3] https://public-inbox.org/git/7vzl1yd5j4.fsf@xxxxxxxxxxxxxxxxxxxxxxxx/ > > >> Teach rebase the --no-ff option. >> >> For git-rebase.sh, --no-ff is a synonym for --force-rebase. >> >> For git-rebase--interactive.sh, --no-ff cherry-picks all the commits >> in >> the rebased branch, instead of fast-forwarding over any unchanged >> commits. >> >> --no-ff offers an alternative way to deal with reverted merges. >> Instead of >> "reverting the revert" you can use "rebase --no-ff" to recreate the >> branch >> with entirely new commits (they're new because at the very least the >> committer time is different). This obviates the need to revert the >> reversion, as you can re-merge the new topic branch directly. Added >> an >> addendum to revert-a-faulty-merge.txt describing the situation and >> how to >> use --no-ff to handle it. >> >> which sounds as if there is? >> >> Stefan >> >