I’ve already discussed customizing your shell and command prompt. To me, it is equally important to leverage Git configuration and autocomplete Git commands. You should also check out how to show the current Git branch in your Bash prompt.
There are a lot of cool things you can do to customize Git just the way you like it. Most of these ideas are personalized versions of the git config customizations found at the Git website.
To create succinct, efficient commands in Git, create aliases for both the shell and for Git. Add the following code snippet to your .profile or .bash_profile:
alias gst='git status' alias gco='git checkout' alias gci='git commit' alias grb='git rebase' alias gbr='git branch' alias gpl='git pull' alias gpu='git push' alias gad='git add -A' alias gmt='git mergetool' alias bdf='git diff' alias glg='git log --date-order --all --graph --format="%C(green)%h%Creset %C(yellow)%an%Creset %C(blue bold)%ar%Creset %C(red bold)%d%Creset%s"' alias glg2='git log --date-order --all --graph --name-status --format="%C(green)%h%Creset %C(yellow)%an%Creset %C(blue bold)%ar%Creset %C(red bold)%d%Creset%s"'
Next add the following code to your ~/.gitconfig file:
[alias] st = status co = checkout ci = commit rb = rebase br = branch pl = pull pu = push ad = add mt = mergetool df = diff lg = log --graph --name-status --oneline
Now reload your shell and you’re good to go. I’d also recommend you configure the following settings:
- Color UI. Adds color to commands like
git statusso you can read the output more easily. It’s as simple as
git config --global color.ui true.
- Code Editor. I like to use vim, but Sublime would be a great alternative.
git config --global core.editor vim.
- Diff & Merge Tool. I downloaded the DiffMerge app for my MacBook Pro and the P4Merge for my Windows box. These tools allow me to compare code or resolve code conflicts when I run into them. This is worth the time it takes to set up before hand. Read how at Customizing Git – Git Configuration: External Merge and Diff Tools.
Below is what my
.gitconfig file looks like now (Updated 2012-09-28):
[user] name = John Doe email = firstname.lastname@example.org [alias] st = status co = checkout ci = commit rb = rebase br = branch pl = pull pu = push ad = add mt = mergetool lg = log --graph --name-status --oneline [core] editor = vim #autocrlf = true [color] ui = true [merge] tool = kdiff3 ff = true [mergetool "kdiff3"] path = /usr/local/bin/kdiff3 #path = C:/Program Files (x86)/KDiff3/kdiff3.exe [diff][/diff] guitool = kdiff3 [difftool] path = /usr/local/bin/kdiff3 #path = C:/Program Files (x86)/KDiff3/kdiff3.exe
Autocomplete Git Commands
To add autocomplete for your Git commands, download the git-completion.bash file. The easiest way I know to do it is by using the following curl command in the shell:
curl https://github.com/git/git/raw/master/contrib/completion/git-completion.bash -OL
The -O options tells curl to output a local file with the same name as the remote file. Thus, the name of the file is extracted from the given URL.
The -L option allows curl to redirect if the appropriate location is indicated with a Location: header and a 3XX response code. curl will redo the request using the new location.
Once you get the the git-completion.bash file, find a place to store it permanently. I put mine with the rest of my shell scripts in ~/bin. Then add the following code snippet to your .profile or .bash_profile file: