Git quickstart
Installation
See my installation notes at "Installing Git 1.5.2.3 on Mac OS X Tiger".
Optional modules
See:
Initial configuration
# personalize these with your own name and email address git config --global user.name "Wincent Colaiuta" git config --global user.email "win@wincent.com" # colorize output (Git 1.5.5 or later) git config --global color.ui auto # colorize output (prior to Git 1.5.5) git config --global color.status auto git config --global color.diff auto git config --global color.branch auto # and from 1.5.4 onwards, this will works: git config --global color.interactive auto # shortcut aliases git config --global alias.st status git config --global alias.ci commit git config --global alias.co checkout # use Apple opendiff (FileMerge) for resolving conflicts # it will be invoked when you do a "git mergetool" git config --global merge.tool opendiff # this so I can submit patches using git send-email git config --global sendemail.smtpserver smtp.example.com git config --global sendemail.aliasesfile ~/.gitaliases git config --global sendemail.aliasfiletype mailrc # as of Git 1.5.4 you'll also be able to add this for SMTP-AUTH git config --global sendemail.smtpuser "user@example.com" git config --global sendemail.smtppass password git config --global sendemail.smtpssl true # shortcut aliases for submitting patches for Git itself # refer to the "See also" section below for additional information echo "alias git git@vger.kernel.org" >> ~/.gitaliases echo "alias junio gitster@pobox.com" >> ~/.gitaliases echo "alias me win@wincent.com" >> ~/.gitaliases # another feature that will be available in 1.5.4 onwards # this is useful when you use topic branches for grouping together logically related changes git config --global format.numbered auto # turn on new 1.5 features which break backwards compatibility git config --global core.legacyheaders false git config --global repack.usedeltabaseoffset true
The --global switch causes changes to be written into ~/.gitconfig rather than the repository-level config.
For more information on configuration type man git-config in the Terminal.
Useful aliases
# support habits from Subversion/CVS git config --global alias.st status git config --global alias.co checkout git config --global alias.ci commit # show difference between the HEAD and the index git config --global alias.staged "diff --cached" # show difference between working tree and the index git config --global alias.unstaged diff # show staged and unstaged changes (what would be committed with "git commit -a") git config --global alias.both "diff HEAD" # quick access to oneline log format git config --global alias.oneline "log --pretty=oneline" # I'm always amending, so "git amend" is easier than "git ci --amend" git config --global alias.amend "commit --amend"
Global ignores
Directory-specific ignores can be specified in a file called .gitignore at the top of the directory.
Repository-wide ignores can be specified in .git/info/exclude.
Global ignores can be placed in a file of your choosing (for example, ~/.gitignore) and turned on using:
git config --global core.excludesfile ~/.gitignore
An example ~/.gitignore file might be as simple as:
.DS_Store
For more information type:
man gitignore
PGP setup
Git supports signing of tags using PGP keys.
# download latest version of GnuPG wget "ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.7.tar.bz2" # verify integrity of download openssl sha1 gnupg-1.4.7.tar.bz2 # extract tar xjvf gnupg-1.4.7.tar.bz2 cd gnupg-1.4.7 # build ./configure make make check # install sudo make install # create a new private/public key pair gpg --gen-key # export ASCII version of public key # (to upload to homepage or public keyserver) gpg --export -a
To actually sign a tag you pass the -s (or -u) flag to git-tag.
gitk setup
gitk works out of the box; for example:
# clone an existing repository git clone git://git.kernel.org/pub/scm/git/git.git # inspect repository history using gitk cd git gitk
Although gitk works with no modifications, it can be tailored to use more readable fonts; I added these lines to my ~/.gitk file:
set mainfont {Monaco 10}
set textfont {Monaco 10}
set uifont {Monaco 10}
A superior alternative to gitk is QGit, although it requires compilation.