Hi Elijah and Stolee, First, Stolee, thanks a lot for adding '--update-refs', it is very useful (I've added it to my config so I don't forget to use it). I recently learned that 'git rebase --whitespace=fix' exists, which is also great but since it uses the apply backend, it can't be used with --update-refs. I understand this, and the fact that adding '--whitespace=fix' to the merge backend would be a big task; this is not what this email is about. I think there is a bug in that the code does not enforce the fact that both options can't be used together. Whenever '--whitespace' or '-C' are used, the code defaults to the apply backend: ```builtin/rebase +1502 if (options.git_am_opts.nr || options.type == REBASE_APPLY) { /* all am options except -q are compatible only with --apply */ for (i = options.git_am_opts.nr - 1; i >= 0; i--) if (strcmp(options.git_am_opts.v[i], "-q")) break; if (i >= 0) { if (is_merge(&options)) die(_("apply options and merge options " "cannot be used together")); else options.type = REBASE_APPLY; } ``` but 'is_merge' only checks if 'opts->type == REBASE_MERGE', so the check only works if --merge was given explicitely, but not when none of '--merge' or '--apply' were given (and so the default "merge" backend is used). I would have expected the code to die telling me --update-refs and --whitespace are incompatible. But instead it defaulted to --apply, and (of course) did not update the refs in my history (which I found out later). Thanks, Philippe.