When working with
git, there's quite a few different settings that you can set to change your experience. A lot of people know about the defaults of
user.email for identification, but there's loads more that you can set up.
Below, is a (mostly complete) copy of my
~/.gitconfig file. As well as identifying myself, I've added a few useful aliases, added colouring and configured which utilities to use for common actions.
My favourite option is probably
help.autocorrect. Without it, git suggests a command close to the one you typed, but makes you type it yourself. With this enabled, it just runs it:
$ git statsWARNING: You called a Git command named 'stats', which does not exist.Continuing under the assumption that you meant 'status'in 0.1 seconds automatically...
As well as that, I force any repositories that I own to be checked out as read/write, rather than read only. It's something I don't do much, but I don't even have to worry about it now.
# Any GitHub repo with my username should be checked out r/w by default# http://rentzsch.tumblr.com/post/564806957/public-but-hackable-git-submodules[url "[email protected]:mheap/"]insteadOf = "git://github.com/mheap/"
When looking at the alias section, you might notice that some of the commands start with a
!. This means "run the following as a shell command". As it can be anything that can be executed, you can even provide a path to a script to run. In my
.gitconfig, I run a script from
~/.dotfiles/bin. I say use the
$ZSH variable from the environment as the base path for the script. Anything you can do on the CLI, you can do in your
[alias]wtf = !$ZSH/bin/git-wtf
You can find all of the git scripts in my dotfiles repository. They're the ones that start with
# This is me[user]name = Michael Heapemail = [email protected]# Set up some useful aliases[alias]co = checkoutci = commitsl = !git shortlog -snlg = !git log --graph --pretty=oneline --abbrev-commit --decoratewtf = !$ZSH/bin/git-wtf# Add colour to ALL THE THINGS[color]diff = autostatus = autobranch = autoui = true[core]# Set up a global excludes fileexcludesfile = ~/.gitignore# Which apps do I want to use with git?editor = vimpager = less -r# Don't warn about whitespace conflicts when applying a patch[apply]whitespace = nowarn# Autocorrect anything I typo[help]autocorrect = 1# Any GitHub repo with my username should be checked out r/w by default# http://rentzsch.tumblr.com/post/564806957/public-but-hackable-git-submodules[url "[email protected]:mheap/"]insteadOf = "git://github.com/mheap/"
For completeness, here's my personal
~/.gitignore file too
.DS_Store .svn *~ *.swp *.rbc