Why does git merge --squash fail when merge.ff is set to only?
- From
Paul Smith <paul@mad-scientist.net>
- Date
- Nov 26, 2014, 19:42 UTC
- Message-ID
- <1417030977.23650.42.camel@homebase>
In our development process we always want to do rebase and only rarely create merge commits, and so we have a recommendation to set the merge.ff configuration attribute to "only".
This is great, however it appears to break git merge --squash (which we also use constantly).
If I'm squash-merging from a branch which is not based on HEAD (cannot use fast-forwarding) then I get the extremely cryptic error:
$ git checkout master $ git pull $ git merge --squash my-branch fatal: Not possible to fast-forward, aborting.
I couldn't even understand what this error meant for a while: what was being fast-forwarded here anyway? It took me a lot of thought to realize it was related to the merge.ff config setting.
Eventually I figured it out, and now have this workaround:
$ git merge --ff --squash my-branch
But, shouldn't we consider this a bug? I don't see any reason why --squash should pay attention to the ff config setting, or command line flags either for that matter. IMHO when you add the --squash flag, the ff options/config should be ignored.
Or, am I missing some subtle issue here?