A friend of mine who is getting warmed up to using git on some projects asked me recently what tools I had to recommend in helping with running some of his own, private repositories. This isn’t about github, but instead, just using git on the home network (which isn’t too hard to do)
To be honest, I don’t use many tools beyond the command line for git. Frankly, I used to have a bunch of aliases, but discovered that moving to a new machine (often in the form of cleanly setup VM) required me to do a lot more setup. Instead, I prefer to use what comes out-of-the-box. The only place I vary in this attitude are the following two git alias commands I have in ~/.gitconfig
[alias]
lg = log –graph –pretty=”format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset'” –abbrev-commit –date=relative
m = merge –no-ff
git lg provides the “railroad diagram” for a repository. It’s a nice visual using colored ASCII art to see the commits and merge history. git m is just a shortcut to support our general policy of not using fast forward merges when merging branches into master. If you can commit the command pattern to your fingers, you don’t even need that.
I have examined gitx and sourcetree, but neither provide a whole lot of leverage above what I can harness from the command line; not like the sort of leverage a good IDE with auto code completion provides. Stuff like the UNIX find command along with “git blame” and “git bisect” are some of the handiest tools I use everyday in tracking down bugs, who submitted them, and what ticket they were issued against (which requires people include bug numbers in commit log messages).
To be effective with Git you really should take the time to learn how its object model works. This (http://www.sbf5.com/~cduan/technical/git/) is a really great tutorial. It doesn’t look flashy at all compared to everything else out there but if you follow along with it and git/gitk you will learn and understand Git.
If you want a github.com like interface at home and enhanced Git permissions management checkout http://gitlabhq.com It uses gitolite under the covers for permissions management. Very nice. There are too many client available to name but even the command line (especially the command line) and plain old gitk work great.