I have the following situation:

  1. I made some commits to my local repository, and then a huge merge of another branch (~150 commits) into the master. It had a lot of conflicts in it.

  2. Now, I want to move a commit I made before the merge to be after it before pushing.

Normally, I would use rebase -i for it.

Unfortunately, the default behavior is to break the one-merge-commit I did that actually added 150 more commits to master into separate commits (I understand it's like if I were to use rebase instead of merge to begin with)—which is bad behavior for me for several reasons.

I was very happy to discover the -p flag for rebase, which preserves merges. Unfortunately, this actually applied the same merge again and forgot all about my hard work in conflict resolving. Again—bad behavior!

Is there a solution for what I want? Using rebase -i after merge to re-order or edit specific commits without having to repeat my post-merge operations?

Thanks!

Edit
Report