From d432cf106f210935c64a46aa5f24007e45852adc Mon Sep 17 00:00:00 2001 From: yushyin Date: Sun, 28 Apr 2019 16:17:47 +0200 Subject: Git: Update aliases --- git/config | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/git/config b/git/config index 09e88fe..339ebe7 100644 --- a/git/config +++ b/git/config @@ -22,9 +22,42 @@ cb = checkout -b d = diff --stat dd = diff - m = merge - ff = merge --ff-only + 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/) \ + '" -- cgit v1.2.3-24-g4f1b