| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | #!/bin/bash# 用于将 dev 分支合并到 prod 分支,保留 prod 配置文件版本# 支持第一次对齐历史 & 后续增量合并# 使用方法:# bash scripts/merge_dev_to_pro.sh first    # 第一次合并# bash scripts/merge_dev_to_pro.sh          # 以后正常合并CONFIG_FILES=("Jenkinsfile" "Dockerfile" "nginx.conf")# 确保脚本在项目根目录运行if [ ! -d .git ]; then    echo "❌ 请在 Git 项目根目录运行此脚本"    exit 1fi# 检查是否有未提交的更改if ! git diff --quiet || ! git diff --cached --quiet; then    echo "❌ 检测到本地有未提交的改动,请先提交或暂存后再执行合并"    exit 1fi# 更新本地分支echo "📦 更新本地分支..."git checkout prod && git pull origin prod || exit 1git checkout dev && git pull origin dev || exit 1# 切回 prod 分支git checkout prod || exit 1# 执行合并if [ "$1" == "first" ]; then    echo "🚀 第一次对齐历史,准备合并 dev..."    git merge dev --no-commit || exit 1else    echo "🔄 增量合并 dev..."    git merge dev --no-commit || exit 1fi# 保留 prod 分支的配置文件echo "🛡 保留 prod 配置文件版本..."for file in "${CONFIG_FILES[@]}"; do    if [ -f "$file" ]; then        git checkout --ours "$file"        git add "$file"        echo "  ✅ 已保留 $file"    else        echo "  ⚠️ $file 在当前分支不存在,跳过"    fidone# 提交合并git commit -m "Merge dev into prod (keep prod config files)"# 推送确认read -p "🚀 是否推送到远程 prod 分支?(y/N) " confirmif [[ "$confirm" =~ ^[Yy]$ ]]; then    git push origin prod    echo "✅ 已推送到远程 prod 分支"else    echo "⏸ 已取消推送,可手动执行:git push origin prod"fi
 |