[pretty] log = %C(yellow)%h%C(reset) %C(normal)%s%C(reset) %C(dim white)%an%C(reset) %C(dim blue)(%ar)%C(reset) %C(auto)%d%C(reset) oldlog = %C(blue)%h%C(reset) - %C(white)(%ar)%C(reset) %s %C(red)%d%C(reset) %C(bold blue)— %an%C(reset) [alias] lg = log --graph --abbrev-commit --color --pretty=log l = lg -n 15 ll = lg --all lf = lg --name-status lp = lg --first-parent s = status -s ss = status a = add ai = add -i p = push pu = pull f = fetch fa = fetch --all c = commit dt = difftool dtg = difftool -g b = branch bv = branch -v bva = branch -va co = checkout cb = checkout -b d = diff --stat dd = diff m = merge --no-ff r = remote rv = remote -v rb = rebase rbi = rebase -i fap = fetch --all -p -t stash-all = stash save --include-untracked # List every branch, local and remote, in order of most recent to oldest commit, showing the branch's last commit and some last commit meta-data br = for-each-ref --sort=-committerdate refs/heads/ refs/remotes/origin/ --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))' - # ff [] # if no are given, tries to fast-forward with the upstream branch ff = !"perl -MGit -E' \ push @ARGV, Git::command_oneline(qw/rev-parse --abbrev-ref --symbolic-full-name @{u}/) unless @ARGV; \ Git::command_noisy(qw{merge --ff-only}, @ARGV); \ '" # ff = merge --ff-only # tomerge tells you which branches matching have not been merged into yet # defaults to HEAD # defaults to . tomerge = !"perl -MGit -E' \ my ($br, $rx) = (shift // q{HEAD}, shift // qr{.}); \ say for grep { \ /$rx/ && !/\\b(master|maint|next)/; \ } Git::command(qw{branch -r --no-merged}, $br); \ '" # topics # show topics (branches) matching the ai/description format or topics = !"perl -MGit -MList::Util=uniq -E' \ my $rx = shift // qr{[a-z]{1,3}/.}; \ say for uniq map { \ $_ = (split /\\s/)[2]; \ s!(remotes|origin)/!!g; \ /$rx/ && !/HEAD/ ? $_ : () \ } Git::command(qw/branch --sort=committerdate -r/) \ '" # rmbranch branchname deletes local und remote branch # defaults to origin rmbranch = !"perl -MGit -E' \ my ($re, $br) = (@ARGV > 1? shift : q{origin}, shift // q{}); \ Git::command_noisy(qw{branch -d}, $br); \ Git::command_noisy(qw{push -d}, $re, $br); \ '"