On Mon, Feb 26, 2024 at 10:58:07AM +0000, Phillip Wood via GitGitGadget wrote: > From: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> > > The only todo commands that accept a merge commit are "merge" and > "reset". All the other commands like "pick" or "reword" fail when they > try to pick a a merge commit and print the message > > error: commit abc123 is a merge but no -m option was given. > > followed by a hint about the command being rescheduled. This message is > designed to help the user when they cherry-pick a merge and forget to > pass "-m". For users who are rebasing the message is confusing as there > is no way for rebase to cherry-pick the merge. > > Improve the user experience by detecting the error when the todo list is > parsed rather than waiting for the "pick" command to fail and print a > message recommending the "merge" command instead. We recommend "merge" > rather than "exec git cherry-pick -m ..." on the assumption that > cherry-picking merges is relatively rare and it is more likely that the > user chose "pick" by a mistake. > > It would be possible to support cherry-picking merges by allowing the > user to pass "-m" to "pick" commands but that adds complexity to do > something that can already be achieved with > > exec git cherry-pick -m1 abc123 > > The change is relatively straight forward but is complicated slightly as > we now need to tell the parser if we're rebasing or not. > > Reported-by: Stefan Haller <lists@xxxxxxxxxxxxxxxx> > Signed-off-by: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> > --- Hi Phillip. The change makes sense, but this is confusing to me: With this ... $ GIT_EDITOR='echo pick 17381ab62a >' ./git rebase -i HEAD error: 'pick' does not accept merge commits, please use 'merge -C' error: invalid line 1: pick 17381ab62a You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'. Or you can abort the rebase with 'git rebase --abort'. ... I find these repeated messages confusing: $ GIT_EDITOR=: ./git rebase --edit-todo error: 'pick' does not accept merge commits, please use 'merge -C' error: invalid line 1: pick 17381ab62a error: 'pick' does not accept merge commits, please use 'merge -C' error: invalid line 1: pick 17381ab62a You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'. Or you can abort the rebase with 'git rebase --abort'.