# git-publish-branch [-d] [branch] [repository]
unset delete
+unset force
if [ "$1" = "-d" ]; then
delete=1
shift
+elif [ "$1" = "-f" ]; then
+ force=1
+ shift
fi
unset branch
git config --unset "branch.$branch.merge"
git config --unset "branch.$branch"
fi
+elif [ $force ]; then
+ if [ -z "$local_ref" ]; then
+ echo "no local branch $branch" >&2
+ exit 1
+ elif [ -z "$remote_ref" ]; then
+ echo "$remote has no branch $branch" >&2
+ exit 1
+ elif [ -z "$remote_config" ]; then
+ echo "local branch $branch is not a tracking branch" >&2
+ exit 1
+ fi
+
+ # Delete the remote branch
+ if [ -n "$remote_ref" ]; then
+ git push "$remote" ":refs/heads/$branch"
+ else
+ echo "$remote has to remote branch $branch" >&2
+ fi
+
+ # Push the new branch
+ git push "$remote" "+$branch:refs/heads/$branch"
else
if [ -z "$local_ref" ]; then
echo "no local branch $branch" >&2