From 4ca698cf871758bd2cf0aed7672a841b70d96a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robin-Charles=20Guih=C3=A9neuf?= Date: Fri, 23 Oct 2020 09:34:07 +0200 Subject: [PATCH] aliases: Introduce git_parent and associated rebase aliases --- .bash_aliases | 58 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/.bash_aliases b/.bash_aliases index 7d221f1..ad73c33 100644 --- a/.bash_aliases +++ b/.bash_aliases @@ -90,6 +90,28 @@ alias cont='git rebase --continue' alias branch_clean='git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d' alias tag_clean='git tag -l | xargs git tag -d && git fetch -t' +function git_parent { + git log --pretty=format:"%D" | \ + grep -v "^$" | \ + sed "s/, /\n/g" | \ + grep -v "HEAD" | \ + grep -v `git rev-parse --abbrev-ref HEAD` | \ + grep -v "tag" | \ + head -n1 | \ + sed "s/origin\/\([^,]*\)/\1/" +} + +function git_parent_tag { + git log --pretty=format:"%D" | \ + grep -v "^$" | \ + sed "s/, /\n/g" | \ + grep -v "HEAD" | \ + grep -v `git rev-parse --abbrev-ref HEAD` | \ + head -n1 | \ + sed "s/origin\/\([^,]*\)/\1/" | \ + sed "s/tag: \([^,]*\)/\1/" +} + alias log='git log --graph --decorate --oneline' # Branch @@ -138,18 +160,46 @@ function grbm { git rebase --interactive master } -function grbr { +function grbi { + # Save current branch + BRANCH=$(git branch | grep \* | cut -d ' ' -f2) + + # Save parent branch + PARENT=$(git_parent) + + # Checkout parent & pull + git checkout ${PARENT} + git pull + + echo "Rebasing on ${PARENT}" + + # Back to previous branch + git checkout ${BRANCH} + git rebase --interactive ${PARENT} +} + +function grbroot { git rebase --interactive --autosquash --root } +function ga { + git autofixup HEAD~$1 + git rebase --interactive --autosquash HEAD~$1 +} + function gam { git autofixup master git rebase --interactive --autosquash master } -function ga { - git autofixup HEAD~$1 - git rebase --interactive --autosquash HEAD~$1 +function gai { + # Save parent branch + PARENT=$(git_parent) + + echo "Rebasing with autofixup on ${PARENT}" + + git autofixup ${PARENT} + git rebase --interactive --autosquash ${PARENT} } # ╔═╗┬┌┬┐ ╔═╗┌┬┐┌─┐┌┐┌┌┬┐