Once you have a decent mental model of git, it works well.
Using git with magit is excellent.
Before I had a good mental model of git, I would've been comfortable with flows like 'add, commit, push' (and the smallest amount of branching from that; 'checkout -b', 'pull').
-- I wasn't able to easily dig myself out of holes I got into if I made the wrong command.
What specifically do you find _hard_ or _complicated_?