tj.git-extras/bin/git-merge-into
2020-11-16 11:33:59 +01:00

49 lines
945 B
Bash
Executable file

#!/usr/bin/env bash
current_branch() {
git rev-parse --abbrev-ref HEAD
}
usage() {
echo "Usage: git merge-into [src] dest [--ff-only]"
}
cur_branch=$(current_branch)
stashed=0
if [ -n "$(git status --porcelain)" ];
then
echo "Local modifications detected, stashing"
stashed=1
git stash
fi
if [ "${!#}" == '--ff-only' ]; then
case $# in
2 ) # dest --ff
git push "$(git rev-parse --show-toplevel)" "$cur_branch":"$1";;
3 )
git push "$(git rev-parse --show-toplevel)" "$1":"$2";;
* )
usage
esac
else
case $# in
1 )
git checkout "$1"
git merge "$cur_branch" "$1" && git checkout "$cur_branch"
;;
2 )
git checkout "$2"
git merge "$1" "$2" && git checkout "$cur_branch"
;;
* )
usage
esac
fi
if [ $stashed -eq 1 ];
then
git stash pop;
fi