After more intensive work with git I have defined my own set of aliases that helps me to interact with git every day. Some of them are borrowed from Google, Red Hat folks or others but most of them are my own work. Please note this will only work with Git 1.5+.
This is an updated blog post with some bugs fixed and more commands :-)
# vim: ts=2:et # ... [alias] pu = pull pur = pull --rebase cam = commit -am ca = commit -a cm = commit -m ci = commit co = checkout st = status br = branch -v unstage = reset HEAD -- find = !sh -c 'git ls-tree -r --name-only HEAD | grep --color $1' - cleanup = !git branch --merged master | grep -v 'master$' | xargs git branch -d k = !gitk g = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative h = !git --no-pager log origin/master..HEAD --abbrev-commit --pretty=oneline pom = !sh -c 'git h && echo Ready to push? ENTER && read && git push origin master' - pomt = !sh -c 'git h && echo Ready to push? ENTER && read && git push origin master && git push origin master --tags' - purm = !sh -c 'test "$#" = 1 && git h && git checkout master && git pull && git checkout \"$1\" && git rebase master && exit 0 || echo \"usage: git purm <branch>\" >&2 && exit 1' - rem = !sh -c 'test "$#" = 1 && git h && git checkout master && git pull && git checkout \"$1\" && git rebase master && git checkout master && git merge \"$1\" && echo Done and ready to do: git pom && exit 0 || echo \"usage: git rem <branch>\" >&2 && exit 1' - rpom = !git pull --rebase && git pom v = !gvim $* lt = !git describe $(git rev-list --tags --max-count=1) mus = !sh -c 'git checkout master && git fetch upstream && git merge upstream/master && git push origin master --tags' - # ...
Standard shortcut set for pull, commit, checkout and branch. These are must-haves.
Git status. What an alias! I use it a lot. Got a bash alias gg for “clear && git st”.
The “missing” git command, taken from the Pro Git book.
Okay this just calls gitk if I accidentally insert a space. It happens to the best of us ;-)
Fast log with nice color formatting. Sometimes better than the standard git log.
Fast overview of differences between master and my current branch. Time saver.
Push into origin/master but first show me the differences in short one-line format and allow me to confirm with a key. The same command is “pomt”, but it pushes also tags. I also have various branch combinations.
A masterpiece. Credit goes to msuchy for the original idea which I slightly extended. This pulls and rebases master on top of a (topic) branch, then merges it into the master and gets ready for pushing. Workflow I use everyday.
Finds a filename in the git repository. Gives absolute location (from the git root).
Sometimes I need to do a “quickfix” directly in the master, then pull with rebase and push. All in one command.
My invention here. Sqmetimes I need to open a Vim with a particular filename but I already got filename with absolute path (from git root). No need to edit it - this command opens Vim in the root git directory.
Deletes all branches that were safely merged into the master. All other are skipped (no worries).