SourceTree continues to be my favorite GIT GUI, especially for viewing history and changes (which is my main use for a git GUI; I use the command line for most other things).
I have tried Tower, Fork, Sublime Merge, and several others. SourceTree is the only GUI I have found that can show the difference between uncommitted changes and any commit. And it does this in a very natural way: the current state is a node, just like each commit. SourceTree can also show the text of an annotated tag -- and that is another thing that few, if any, other GIT GUIs can do.
Also I find the history layout very efficient: a single window shows commits, uncommitted changes and the diff between any two commits (or your uncommitted changes and any commit).
One weakness is resolving merge conflicts using "Theirs" or "Mine". Its merge conflict support is just fine for working through a file line by line: you can use any 3-way merge tool, such as Apple's FileMerge. But occasionally I just want to say "use my local copy" or "use the remote version" and in that situation I find it difficult to know which is which. I think Fork handles that a bit better.
Overall I have found it to be quite robust. It has occasional cosmetic bugs, and Atlassian can be slow to fix those. The one bug I currently know about is that if one selects text from the commit info pane and types ctrl-C, it ignores the selection. Fortunately the contextual menu has a Copy command that does the job. And there's also a "copy commit hash" menu item, which is useful for starting an interactive rebase on the command line.
I have found SourceTree to be the best GIT GUI for me, at any price. But they each have their strengths and weaknesses. If you spend a lot of time coding then it's worth trying several.