make git-update update multiple branches at once

This commit is contained in:
Sami Samhuri 2015-08-06 14:39:40 -07:00
parent 4caf7b8bdb
commit 7aafe27d31

View file

@ -1,15 +1,37 @@
#!/bin/bash #!/bin/bash
set -e # bail on errors
REMOTE="${1:-origin}" REMOTE="${1:-origin}"
BRANCH=$(git branch --no-color --list | grep '^\*' | awk '{print $2}') ORIG_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
if [[ "$BRANCH" != "(detached" ]]; then if [[ "$ORIG_BRANCH" = "HEAD" ]]; then
STASH_OUTPUT=$(git stash) echo "Cannot update in a detached HEAD state"
if [[ "$STASH_OUTPUT" = "No local changes to save" ]]; then exit 1
POP_STASH=0 fi
else if [[ -z "$2" ]]; then
POP_STASH=1 BRANCHES="$ORIG_BRANCH"
fi else
git fetch --prune --tags "$REMOTE" && git rebase "$REMOTE/$BRANCH" && ([[ $POP_STASH -eq 1 ]] && git stash pop) || true shift
else BRANCHES="$@"
echo "Cannot update in a detached HEAD state" fi
STASH_OUTPUT=$(git stash)
if [[ "$STASH_OUTPUT" = "No local changes to save" ]]; then
POP_STASH=0
else
POP_STASH=1
fi
git fetch --prune --tags "$REMOTE"
for BRANCH in $BRANCHES; do
echo "* Updating $BRANCH from $REMOTE/$BRANCH"
git checkout "$BRANCH"
git rebase "$REMOTE/$BRANCH"
done
git checkout "$ORIG_BRANCH"
if [[ $POP_STASH -eq 1 ]]; then
git stash pop
fi fi