I’ve been using git for version control for several years now. While I’m comfortable using it from the command line, there are times when it’s handy to have a GUI tool available. My current tool of choice is the GitHub Desktop app.

Don’t get me wrong, I’m still a big fan of Magit when I’m working in Emacs. But at work, our team has mostly standardized on Atom so I needed another solution.

The GitHub Desktop app doesn’t do everything you can do from the command-line, but it handles a large part of the standard workflow. It allows you to add, create, and clone repositories, create and merge branches, commit and push changes, and create pull requests.

I particularly like to use it to review my changes before committing them. The graphical diff view is quite useful for that.

GitHub Desktop has some more subtle features that might take a while to discover.

For example, it’s relatively clear that you can choose to omit some changed files from a commit by unchecking them. However, you can also selectively commit changes within a file by clicking in the line-number “gutter” of the file display.

Another subtle feature shows up when switching branches while you have uncommitted changes. On the command line, git warns you about this and doesn’t let you switch. GitHub Desktop instead stashes the changes and then switches branches for you. When you switch back to the original branch, it pops the stash back out so you can continue where you left off. I haven’t explored the limits of this feature, but it is certainly handy when you need to temporarily switch over to a new branch.

GitHub Desktop includes a history view that lets you see all of the commits on your current branch, including the actual changes included in the commit. The history view also gives you the ability to revert a commit should you need to do that.

If you need to resolve merge conflicts or do an interactive rebase, you’ll have to fall back to the command-line. GitHub Desktop doesn’t support those features yet. It also doesn’t provide any stash management features other than the automatic one I mentioned above.

If you need some of those features in a GUI, you might try Atlassian’s SourceTree. I’ve used it a bit, and it definitely has a lot more features. But I find that those extra features come at the cost of making it a bit harder to navigate and figure out how to do what I want to do.

All in all, I find GitHub Desktop a handy tool in my toolbelt, and I use every day.