From 975a9e88f673652e66173875b9b3249cc72c3978 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 28 Apr 2026 11:55:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy.sh | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/deploy.sh b/deploy.sh index 0b9dded..7529882 100755 --- a/deploy.sh +++ b/deploy.sh @@ -4,15 +4,33 @@ set -euo pipefail PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$PROJECT_ROOT" -TARGET_BRANCH="${1:-$(git rev-parse --abbrev-ref HEAD)}" +resolve_default_branch() { + local current + current="$(git branch --show-current 2>/dev/null || true)" + if [[ -n "$current" ]]; then + echo "$current" + return + fi + + local remote_head + remote_head="$(git symbolic-ref --short refs/remotes/origin/HEAD 2>/dev/null || true)" + if [[ -n "$remote_head" ]]; then + echo "${remote_head#origin/}" + return + fi + + echo "main" +} + +TARGET_BRANCH="${1:-$(resolve_default_branch)}" echo "==> Deploy directory: $PROJECT_ROOT" echo "==> Target branch: $TARGET_BRANCH" if [[ -n "$(git status --porcelain)" ]]; then - echo "Error: working tree is not clean." - echo "Please commit/stash local changes before deployment." - exit 1 + STASH_NAME="auto-deploy-$(date +%Y%m%d-%H%M%S)" + echo "==> Working tree is not clean, auto stashing: $STASH_NAME" + git stash push -u -m "$STASH_NAME" >/dev/null fi echo "==> Fetching remote updates..."