I use it every day, almost all of the time. I don't use a lot of it, but what I do use is tremendously useful. My workflow is usually:
1. Navigate to the folder in terminal (old habit, or starting servers) and type in `github .` which launches the client for this repo.
2. Sync to pull in new changes (cmd + s)
3. Create a new branch (cmd + b)
4. Commit as I code (visual diff helps me do light code review on the spot). This is definitely the core usage for me — seeing what uncommitted changes I have, selecting out partial commits, drafting up good commit messages, amending bad commits, etc.
5. When I'm ready to publish my branch, sync again (cmd + s)
The key for me really comes down to some really simple stuff: a visual editor for creating commits, and quick keyboard commands to common actions (branching, switching branches, push/pull). It's possible to do fast in terminal, but muscle memory serves me personally much better with real keyboard commands.
cd /your/src/dir
git pull
<edit stuff>
git diff
<look at stuff; possibly edit more stuff>
git commit -m "edited stuff"
<oops...forgot something; edit another file>
git commit -a --amend
git push origin
Which, of course, has the added advantage that you're using git, instead of using a GUI obfuscation layer on top of git, and therefore learning your tools.I mean...I sort of get why people do git integration in editors (even thought it tends to lead to ignorance of git), but opening up another, non-console, non-editing app, just for git?
You also left out a lot of the (again simple) commands I've included — switching branches and partial commits, where things like fuzzy autocomplete are very nice if your shell does not hook into Git and support fuzziness.
git checkout -b new_branch
<edit edit edit>
git commit -a -m "i'll merge this branch"
git checkout master
git merge new_branch
vs: git checkout -b new_branch
<edit edit edit>
git commit -a -m "did stuff that i'll rebase this time"
git fetch
git rebase origin/master
git checkout master
git merge new_branch
vs: git checkout -b new_branch
<edit foo.txt and bar.txt>
git add foo.txt
git commit -m "edited foo"
git stash
...
People think differently, but nothing you've described is conceptually different than using the CLI. It's just a GUI, doing/obscuring the same stuff -- stuff that you need to understand to use git.In other words, it's the leaky abstraction problem. You can pretty up the UI, but ultimately, you have to communicate the concept to the user. It's how we got those "Can I copy The Internet?" questions in Windows 95....
Then I'll switch over to the CLI for branching, merging, resetting and bitsecting (the latter two arent possible in the GitHub app)
cd /yor/src/dir
bash: cd: /yor/src/dir: No such file or directory
examines closely to look for typo
cd /your/src/dir <edit stuff>
git diff
git comit -m "edited stuff"
Did you mean this? git: 'comit' is not a git command. See 'git --help'.
Did you mean this?
commit
git commit -m "edited stuff"I think this is enough to get the picture.
And on anecdotal evidence, I've observed that people who use git intensively everyday often have aliases to these commands that have a low probability of typos.
eg gcom => git commit
I too use it for light code review, but often find spurious whitespace/brace placement changes that I want to revert to make my eventual PR a bit less noisy..
Other then that I just find the command line to be quicker for most things.
[1] http://rowanj.github.io/gitx/ [2] http://jonas.nitro.dk/tig/
Mind you I am working on repos in the several hundred mb size or at least double digit mb.
The mac version seems to be similar issues, for example if I look at a commit with more like then 150 file changes it pretty much either lags to the point where I force quit or crashes.
Maybe it's just me, but the command line still works better for me.
Personally, I don't have an issue with using the command line for Git, but I get by just fine with SourceTree.
It's helpful in visualising Git concepts with its tree graph, and I don't have to remember commands. I also realise this goes counter to the command-line culture of HN :)
I find the Github app too limiting for most git functions other than pushing and pulling (and the resulting rebase or merge) to the remote repositories, but the interface is much much better – simpler, quicker and easier – for those specific tasks than SourceTree.
Maybe someone with the Windows client can provide more insight, given the similarities.