Recs.
Updated
Free to use. Source not available.
Sourcetree is a full featured and free Git UI for both Mac and Windows that provides an interface for pretty much everything you can do in the CL.
SpecsUpdate
Pros
Pro Built-in Git-flow and Hg-flow support
Git-flow and Hg-flow provide a consistent development process by defining a strict branching model that is great for managing large projects.
Sourcetree allows setting up and integrating into repos that follow this model. Clicking the Git-flow / Hg-flow toolbar button will give you access to actions for starting or finishing features, releases or hotfixes depending on current state of repository.
Pro Comprehensive layout
SourceTree has 3 main repository views: file status, history and search.
File status view shows status of currently selected repo. It's split in 2 areas - file list and diff-view.
History view tracks changes made to the currently selected repository. It's divided in 3 sections. The top section has a graph with progression of commits, branches and merges. The bottom section shows commit details, files changed and differences committed.
Search view allows looking up commit messages, users, files changes, branches and commit SHA.
There's also a toolbar at the top that allows switching between the three views as well as gives access to git commands such as commit, checkout, reset, stash, add, remove, fetch, pull, push, branch, merge and tag.
Pro Easy to stage partial changes
Staging only several changed lines while leaving others unstaged is implemented a lot better in SourceTree than everywhere else. Just click in the change view, drag and stage.
Pro Quick setup
Once installed, Sourcetree will automatically try to look for and set up repos that are worked on. Sourcetree will also detect if git-flow is used and what is the current development state as long as default git-flow branch names are used.
The softaware tracks all relevant repositories in the bookmark's window. Repositories can be added to the list by creating new ones, adding a local folder, supplying a clone URL or integrating with remote services such as Bitbucket or GitHub.
Additionally, it can be set up via Homebrew Cask. Homebrew Cask extends the functionality of Homebrew package manager and allows installing SourceTree with a single line.
brew cask install sourcetree
Pro Supports Git, Mercurial and Subversion
Allows managing Git & Mercurial repos side by side. It even allows Subversion interoperability via either git-svn or hgsubversion plugins that set up a bridge between either Git and SVN or Mercurial and SVN respectively.
Pro Allows the raw git commands and responses to be inspected
If you get into trouble or are curious you can hit the button in the bottom left to show the raw git commands and responses that were executed and when they were executed, although these commands have a bunch of boilerplate which will reduce the usefulness of this feature for most users: eg: git fetch
is actually executed as git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree fetch --prune origin
Pro Allows chunks and lines selection during commit
SourceTree automatically splits the changes to be committed into chunks allowing committing (or discarding) each chunk separately. Furthermore, the user can even select specific lines. This greatly increases the flexibility of the user in that matter.
Cons
Con Slow with large repos or quick operations
Some operations can be slow. If you know what you want (e.g you want to touch a file, add it, commit it and push it) you can do it much faster on the command line. Often you're not going to know what you want, so the visual diffs etc help massively.
Con Information density can be a bit much
It's possible to be overwhelmed with the information density presented in Sourcetree. Especially in history view since it includes a lot of data presented in various ways.
It's great for getting a comprehensive overview of everything that's happening in one place, but it can take some getting used.