On Fri, Nov 26, 2021 at 04:44:52PM -0500, Jeff King wrote: > +cc Alex and Elijah from the original 3d5fc24dae (pull: abort if > --ff-only is given and fast-forwarding is impossible, 2021-07-21) in > case they have further thoughts, but I _think_ this is working as > designed. Whoops, forgot the cc. Original message in full below. -Peff > On Fri, Nov 26, 2021 at 09:05:46PM +0300, Dmitry Marakasov wrote: > > > * Jeff King (peff@xxxxxxxx) wrote: > > > > > > After update from 2.33.0 to 2.33.1 the pull.rebase = true option > > > > no longer works: `git pull` no longer tries to rebase (however manual > > > > `git pull --rebase` works fine): > > > > > > > > % git config pull.rebase > > > > true > > > > % git pull > > > > fatal: Not possible to fast-forward, aborting. > > > > % git pull --rebase > > > > Successfully rebased and updated refs/heads/local-fixes. > > > > % git pull > > > > fatal: Not possible to fast-forward, aborting. > > > > % grep -C1 rebase .git/config > > > > [pull] > > > > rebase = true > > > > [rebase] > > > > autostash = true > > > > > > > > After downgrade to 2.33.0: > > > > > > > > % git pull > > > > Current branch local-fixes is up to date. > > > > > > This looks like the same bug discussed in: > > > > > > https://lore.kernel.org/git/CH2PR06MB650424B4205102AC6A48F489B1BD9@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ > > > > > > There's a fix in that thread. It's currently in "next", but didn't quite > > > make the cutoff for the upcoming v2.34.0. > > > > For the record, the problem is still present in 2.34.1 > > In the bug I linked (and what got fixed in 2.34.1), the issue is that > when the local branch is ahead of the remote, we don't say "up to date", > but complain about fast-forwards. > > It's hard to tell from the output above, but it looks like you have a > case where there are new commits both locally and on the remote? In > which case a rebase would work just fine. > > But why are we complaining about "not possible to fast-forward"? Testing > locally with something like: > > -- >8 -- > git init repo > cd repo > > commit() { > echo $1 >$1 > git add $1 > git commit -m $1 > } > > git checkout -b local > commit base > commit local > > git checkout -b remote HEAD^ > commit remote > > git checkout local > git config pull.rebase true > git pull . remote > -- >8 -- > > shows that we do rebase. If I set: > > git config pull.ff only > > then we start complaining. And that behavior did change in 2.33.1, but > I'm not sure it's wrong. We have two conflicting config options, and the > precedence for which one we pick switched. > > Do you have that option set in your config? Try: > > git config --show-origin --show-scope --get-regexp 'pull\..*' > > > -Peff