git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Can't squash merge with merge.ff set to false

From
Paul Smith <paul@mad-scientist.net>
Date
Jan 5, 2018, 20:26 UTC
Message-ID
<1515183976.21764.114.camel@mad-scientist.net>
In-Reply-To
<CAGyf7-FHyO9pkEFFguea+B+VMTodF=mg8wJNedvjYdL7e7ORqQ@mail.gmail.com>
On Fri, 2018-01-05 at 12:12 -0800, Bryan Turner wrote:
Show 16 quoted lines
> On Fri, Jan 5, 2018 at 11:59 AM, Robert Dailey <rcdailey.lists@gmail.com> wrote:
> > Not sure if this is intended or a bug, but with the following
> > configuration:
> > 
> > $ git config --global merge.ff false
> > 
> > I am not able to merge my topic branch into master with squash
> > option:
> > 
> > $ git checkout master
> > $ git merge --squash topic
> > fatal: You cannot combine --squash with --no-ff.
> > 
> > I'm not sure why a non-fast-forward merge would prevent a squash
> > merge, since by its very nature a squashed merge is not a fast
> > forward merge (or maybe it is if you only have one commit).

Hah! I was just thinking of checking the latest Git RC I built yesterday to see if this pet peeve of mine has been fixed yet. I guess not!

> The easiest way to move forward is probably to pass "--ff" on the
> command line to override the config, when you're using "--squash".

That's what we always have to do. Very annoying; we use squash-merge extensively but also want to require ff merge by default.

Show 7 quoted lines
> As for why the two aren't allowed together, my assumption would be
> because if you're only squashing a single commit "--squash" and that
> commit is fast-forward from the target, a new commit is not created
> and instead the target branch is fast-forwarded. With "--no-ff", it's
> questionable what "--squash" should do in that case. Fast-forward
> anyway? Rewrite the commit simply to get new committer details and
> SHA-1?

If it only failed when you were squash-merging a single commit that was also fast-forwardable, I guess that would be one thing. But even if I have multiple commits and I want to squash-merge them, which clearly is a separate operation giving different results, I get this error.

I don't think Git should try to be clever here (if that's what it's doing--I always assumed it was just a missing configuration case in the error check). If I asked for a squash-merge then Git should give me a squash merge.

So in answer to your question, --squash should give me a squash merge and the setting of --ff / --no-ff should be completely ignored, as it's irrelevant.

My $0.02.
Previous: Bryan TurnerNext: Robert Dailey
Message 3 of 7 in “Can't squash merge with merge.ff set to false”
  1. Robert DaileyJan 5, 2018
  2. Bryan TurnerJan 5, 2018
  3. Paul SmithJan 5, 2018
  4. Robert DaileyJan 5, 2018
  5. Bryan TurnerJan 5, 2018
  6. Robert DaileyJan 5, 2018
  7. Jonathan NiederJan 6, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.