Items 2 and 4 are addressed by my git-branchless project: https://github.com/arxanas/git-branchless. You can undo with `git undo`, and merge conflict resolution never starts unless you specify `-m`/`--merge`. There's a UI for item 3 underway as well.