Hi Hilco, On Tue, 20 Feb 2018, Johannes Schindelin wrote: > When I am particularly tired and overworked (and therefore know that my > working memory is less useful than usual), I therefore resort to my > second-favorite strategy: U use the `done` file. > > I literally copy parts of $GIT_DIR/rebase-merge/done to the beginning of > $GIT_DIR/rebase-merge/git-rebase-todo (the most convenient way to open the > latter is `git rebase --edit-todo`). In your case, those would be the > `pick` lines cherry-picking D and E. Then, as before, `git reset --hard > <commit>` (where I look up the `<commit>` using an aliased version of `git > log --graph --oneline --left-right --boundary`), amend the commit, and > then `git rebase --continue`. > > It might be even possible to design a new subcommand for the interactive > rebase to facilitate a variation of this strategy (possibly even making > use of the fact that the interactive rebase accumulates mappings between > the original commits and the rewritten ones in > $GIT_DIR/rebase-merge/rewritten-list, intended for use in the post-rewrite > hook). This feature might look somewhat like this: git rebase --replay-latest-commits 3 and it would not even have to look at the `rewritten-list`. All it would do is to put back the latest `pick` from the `done` file (in case of merge conflicts) into the `git-rebase-todo` file, then insert `pick lines for HEAD~3.. at the beginning of that todo file, and then `git reset --hard HEAD~3`. By not using the original lines from the `done` file (i.e. *different* from what I described as my second-favorite strategy), you would also get the resolved merge conflicts rather than having to re-resolve them. (This all would of course only work properly without --preserve-merges and without the upcoming --recreate-merges.) Ciao, Johannes