Despite some people in my office proclaiming themself "too hardcore" to use a git interface, I believe SourceTree is fantastic. When I used to work with windows, I used TortoiseGit -- which is decent, but lacks some of the more advanced niceties.
Committing portions or single lines of a file, remembering to push that pesky submodule, all becomes an order of magnitude easier and quicker with a decent GUI. The response to "but it can't do everything, so I'll stick to CLI", is simple. The 5% of the time the GUI doesn't cover exactly what you need, the terminal is sitting right there for you... it doesn't disable it.
git gui allows you to do most of the advanced operations you mentioned (partial commits), and it has the advantage of coming preinstalled with git itself, which means that if you master that tool, you can find your way in pretty much every other situation (new machine, deployment server, etc..)
I really liked SourceTree when I tried it, but my god is it slow on my iMac at work. It's still useful for complicated operations I don't want to (or know how to) do on the CLI, but it is not fast enough to be my main version control interface.
Committing portions or single lines of a file, remembering to push that pesky submodule, all becomes an order of magnitude easier and quicker with a decent GUI. The response to "but it can't do everything, so I'll stick to CLI", is simple. The 5% of the time the GUI doesn't cover exactly what you need, the terminal is sitting right there for you... it doesn't disable it.