aliases: Introduce git_parent and associated rebase aliases
This commit is contained in:
		| @@ -90,6 +90,28 @@ alias cont='git rebase --continue' | |||||||
| alias branch_clean='git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d' | 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' | 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' | alias log='git log --graph --decorate --oneline' | ||||||
|  |  | ||||||
| # Branch | # Branch | ||||||
| @@ -125,33 +147,43 @@ function grb { | |||||||
|   git rebase --interactive HEAD~$1 |   git rebase --interactive HEAD~$1 | ||||||
| } | } | ||||||
|  |  | ||||||
| function grbm { | function grbi { | ||||||
|   # Save current branch |   # Save current branch | ||||||
|   BRANCH=$(git branch | grep \* | cut -d ' ' -f2) |   BRANCH=$(git branch | grep \* | cut -d ' ' -f2) | ||||||
|  |  | ||||||
|   # Checkout master & pull |   # Save parent branch | ||||||
|   git checkout master |   PARENT=$(git_parent) | ||||||
|  |  | ||||||
|  |   # Checkout parent & pull | ||||||
|  |   git checkout ${PARENT} | ||||||
|   git pull |   git pull | ||||||
|  |  | ||||||
|  |   echo "Rebasing on" ${PARENT} | ||||||
|  |  | ||||||
|   # Back to previous branch |   # Back to previous branch | ||||||
|   git checkout ${BRANCH} |   git checkout ${BRANCH} | ||||||
|   git rebase --interactive master |   git rebase --interactive ${PARENT} | ||||||
| } | } | ||||||
|  |  | ||||||
| function grbr { | function grbroot { | ||||||
|   git rebase --interactive --autosquash --root |   git rebase --interactive --autosquash --root | ||||||
| } | } | ||||||
|  |  | ||||||
| function gam { |  | ||||||
|   git autofixup master |  | ||||||
|   git rebase --interactive --autosquash master |  | ||||||
| } |  | ||||||
|  |  | ||||||
| function ga { | function ga { | ||||||
|   git autofixup HEAD~$1 |   git autofixup HEAD~$1 | ||||||
|   git rebase --interactive --autosquash 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} | ||||||
|  | } | ||||||
|  |  | ||||||
| # ╔═╗┬┌┬┐  ╔═╗┌┬┐┌─┐┌┐┌┌┬┐ | # ╔═╗┬┌┬┐  ╔═╗┌┬┐┌─┐┌┐┌┌┬┐ | ||||||
| # ║ ╦│ │   ╠═╣│││├┤ │││ ││ | # ║ ╦│ │   ╠═╣│││├┤ │││ ││ | ||||||
| # ╚═╝┴ ┴   ╩ ╩┴ ┴└─┘┘└┘─┴┘ | # ╚═╝┴ ┴   ╩ ╩┴ ┴└─┘┘└┘─┴┘ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user