I think the biggest problem with 'git' is how hard it is to undo any mistakes. I'm freshly astonished every I mistakenly commit something and then have to carefully run 'git reset ~HEAD' some exact number of times to get back to a clean state.
Thank goodness for my pricey IDE and it's history caching or I'd never manage.
The reason I stick to 'commit', 'push' and 'merge' as my git flow is that I've gotten pretty good at undoing the messes I've made with them. I'm such a coward that my merge command is
`git merge <branch> master --no-ff --no-commit`