You probably want to use the --preserve-merges
option of git rebase --interactive
, reorder the commits so the merges are first, and then squash all the merges together. If I were you, I would do two rebases, one to reorder, and another one to squash, that way it would be simpler to resolve the conflicts.
However, your solution using 'feature2' seems good enough, you can edit the merge commit message, so the name 'feature2' is not a problem, and also, you don't need to create a branch, you can work on a detached head:
git checkout devel^0
git merge --no-ff --edit fixes
git rebase HEAD feature