At least some of these are what makes git awesome.
* commit changes manually
- I find my self picking individual changes out of the current state of my source & committing them individually all the time, so this is just perfect.
* history & branch navigation.
- Um. Not sure what the problem is here. I can checkout anything I like, hop around the history at will, tag any version with meaningful names etc. Am I missing something?
* confusing command structure.
- Yeah, have to give you this one. It is (slowly) getting more consistent over time at least.
* history rewriting
- this means I can hack & commit away then rewrite my changes into a logically consistent series of changesets that make sense individually before pushing to the main repo. I rewrite history all the time before pushing.
* no merge tool
- but is happy to use whatever merge tool you plug into it, which works pretty well in my experience. (See the git-mergetool manpage.)
* submodules
- Yeah, these are mostly awful.
I think git (or mercurial for that matter) is great for people who see having a clean, well documented change history where every commit makes sense in and of itself as a worthwhile thing to have. If you're the kind of developer who just uses a VCS as a sort of 'source code backup' and your revision history consists mostly of a long series of "Update" comments then all the extra power that git has is just extra complexity that you don't need.