Re: Why does git merge --squash fail when merge.ff is set to only?
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 26, 2014, 21:32 UTC
- Message-ID
- <xmqqh9xlps0c.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <1417030977.23650.42.camel@homebase>
Paul Smith <paul@mad-scientist.net> writes:
Show 29 quoted lines
> 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?
Offhand I do not think of any, but I do not use --ff-only or quash merge myself very often. If I have to guess, this is merely an implementation glitch where whoever did "merge --squash" did not think its interaction with --ff-only through (if --ff-only came first) or whoever did "merge.ff = only" support did not think its interaction with "merge --squash" through (if things happened in the other order).