#!/usr/bin/env bash # ignore detached heads if ! git symbolic-ref -q HEAD > /dev/null; then exit fi # ignore non-branch checkouts if [[ "$3" != "1" ]]; then exit fi # skip if upstream is already set if git rev-parse --verify --quiet '@{u}' > /dev/null 2>&1; then exit fi # use upstream/HEAD if it exists, otherwise origin/HEAD if git show-ref --verify --quiet refs/remotes/upstream/HEAD; then git branch --set-upstream-to refs/remotes/upstream/HEAD else git branch --set-upstream-to refs/remotes/origin/HEAD fi