Almost all of these are quarrels with Git's UI/UX, not with its model of representing data. Tools like https://rowanj.github.io/gitx/ combined with a git-flow workflow (or anything similar) solve practically all of the mentioned shortcomings.
GitX is one of those great, simple tools that I have used for years. I do actually love the Xcode treatment of a git UI as well, but it's overkill in most cases.
https://sqlite.org/whynotgit.html
And HN discussion (with over 600 comments) here: https://news.ycombinator.com/item?id=16806114