I've found the gui tools that come with git are actually the closest thing to SourceTree, and I'm tempted to switch to them because they're open source and work everywhere:
git gui (for staging and committing, including selecting lines to stage, which is in the right-click menu) gitk --all (commit graph of all branches, switching checked out branch)
The main negative is a weird gui toolkit and some weird gui conventions (e.g., in "git gui", you click the _icon_ in the list of files on the left to stage/unstage the whole file)