my .gitconfig, see gitconfig for inline comments.
Some are stuff I use a lot. A lot are things I use occasionally, so this just documents them.
Show a colorful list of git branches sorted by last commit date.
Think of it as the 'ls -lart' of 'git branch'. Supports 'git branch' options (ala, '-a, '-r', etc)
Checkout a tag "FOO-1-0" into a branch called "FOO-1-0-branch".
$ git checkout-tag FOO-1-0
Attempts to find untracked files that are likely to be candidates to be committed.
This uses 'ack' to build a list of things that look like source code. The idea is to show a more focused list of candidates that 'git status -u' output.
Alias for 'git cherry -v'. Shows a summary of commits in the local branch that have not been pushed yet.
List tags sorted by a version sort. Needs GNU sort (it uses 'sort --version-sort'). Useful if you tag releases with version info.
List tags sorted by the date they were created/tagged, ie, 'taggerdate'. Useful if you work on multiple releases and are looking for 'the thing we just released', which may not be the highest version (as used in tagsort).
Show the repo url of 'origin'.
16:34 $ git cloneurl
git:https://github.com/ansible/ansible.git
Search for a pattern in branch names, file names, or file contents. A combo of 'find', 'git grep' plus branch search.
16:50 $ git find brage
remotes/origin/add_dash_v_to_brage
bin/git-brage
bin/git-brage: echo "git-brage [-v|--verbose] [extra for-each-ref options]"
gitconfig: # brage = "!f() { git for-each-ref --sort=committerdate refs/heads $1 --format=\"%(refname:short)\" ; }; g() { for C in $(f $1) ; do git show -s --pretty=format:\"%Cgreen%ci %Cblue%cr%Creset $C\" \"$C\" -- ; done; }; g "
gitconfig: brageall = !git brage refs/remotes
gitconfig: # TODO: make these options of 'git-brage' script
gitconfig: tbrage = "!f() { git for-each-ref --sort=committerdate refs/heads $1 --format=\"%(refname:short)\" ; }; g() { for C in $(f $1) ; do UP=$(git rev-parse --symbolic-full-name --abbrev-ref $C@{upstream} 2> /dev/null); TRACKING=$?; UP=\"-> $UP \"; if [ $TRACKING -ne 0 ] ; then UP=\"\"; fi; git show -s --pretty=format:\"%Cgreen%ci %Cblue%cr%Creset $C $UP\" \"$C\" -- ; done; }; g "
gitconfig: tbrageall = !git tbrage refs/remotes
List the files in the repo with the most changes.
Show the commit that first added $FILE into the repo
Show a summary of files in the repo grouped by file extension.
Show file/repo contents in a format similar to the github tree view.
16:22 $ git ls-github
LICENSE 1 year, 7 months ago Create LICENSE [Adrian Likins]
README.md 2 hours ago README -> README.md [Adrian Likins]
gitattributes 3 years, 11 months ago Add config options to use po_diff/pot_diff for po files [Adrian Likins]
gitconfig 2 hours ago Add epydoc diff viewer config [Adrian Likins]
Provide a list of committers sorted by the number of lines of code committed by each.
Note: Some of the tools here are pretty specific to my workflow, the tools I use, and the projects I work on. So not everything here is general purpose.
install git-checkcommits to somewhere in the PATH. usage is "git checkcommits master feature" which will show commits in feature that don't seem to be in master. It's based on comparing the subject line, and try's to ignore subjects that start with "12345:" (how we indicate bug id's).
git-showbugs also needs to go in PATH, and requires python-bugzilla setup. It looks for the same bug id as above.
git-bugbyrelease shows bugs fixed in each release. This is kind of specific to https://https://rm-rf.ca/tito based builds.
If not otherwise specified, the License here is GPLv2 or later. But check the source/comments about each tool to verify. For the most part tools borrowed from elsewhere will have comments pointing to the original source. In those cases, the license chosen by the original author would apply.