diff --git a/tools/finish-feature.sh b/tools/finish-feature.sh new file mode 100755 index 0000000..ad44977 --- /dev/null +++ b/tools/finish-feature.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +# 在 feature 分支上执行:合并到 main、推送、删除本地和远端分支 +# 用法:bash tools/finish-feature.sh +set -euo pipefail + +BRANCH=$(git branch --show-current) +if [[ ! "$BRANCH" =~ ^feature/ ]]; then + echo "❌ 当前分支不是 feature/*:${BRANCH}" + exit 1 +fi + +if ! git diff --quiet || ! git diff --cached --quiet; then + echo "❌ 工作区有未提交改动,先提交或暂存" + exit 1 +fi + +echo "== 合并 ${BRANCH} → main" +git checkout main +git pull --ff-only origin main +git merge --no-ff "$BRANCH" -m "Merge branch '${BRANCH}'" +git push origin main + +echo "== 清理分支 ${BRANCH}" +git branch -d "$BRANCH" +if git ls-remote --exit-code --heads origin "$BRANCH" >/dev/null 2>&1; then + git push origin --delete "$BRANCH" +fi + +echo "✅ 已合并并清理 ${BRANCH}"