I finally started organizing the various git commands and aliases I use alot, and published them to github. My gitconfig repo.

Some of these are useful only for projects similar to mine (fedora, tito based, bugzilla, etc) but I think some of then are generally useful.

A few favorites:
# commits not pushed to $1
unpushed = cherry -v

# ignore po files in "git log", sorry translators ;-<
slog = "!sh -c 'git log --no-merges $1 `ls | grep -v ^po`' -"

# what tag contains the sha
whatrelease = name-rev --name-only

# what branch contains the sha
contains = branch --contains

# what got pushed to master in the last hour
# based on
justpushed = log origin/master@{\"1 hour ago\"}..origin/master --

# show a list of branches sorted by time of last commit
brage = "!sh -c 'for C in $(git for-each-ref --sort=committerdate refs/heads --format=\"%(refname:short)\") ; do git show -s pretty=format:\"%Cgreen%ci %Cblue%cr%Creset $C\" \"$C\" -- ; done'"

# show a list of tags sorted by when they were tagged
tagage = "!sh -c 'git for-each-ref --sort=taggerdate refs/tags --format=\"%(refname:short)\"'"

# show a list of every branch and show there latests commit, sorted by last commit
brlog = "!sh -c 'for C in $(git for-each-ref --sort=committerdate refs/heads --format=\"%(refname:short)\") ; do git show -s --pretty=format:\"%Cgreen%ci %Cblue%cr%Creset $C\" \"$C\" -- ; git show -s $C ; echo; done'"

# needs python-bugzilla, and git-showbugs

# show a list of files with bug fixes in them, sorted by popularity of occurance
# aka, list the buggy files
buggyfiles = !"git log --format=\"format:%n\" --grep \"^[[:digit:]]\\+:\" --name-only | grep . | sort | uniq -c | sort -n"

One thought on “gitconfig

Comments are closed.