|
@@ -0,0 +1,61 @@
|
|
|
+#!/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 1
|
|
|
+fi
|
|
|
+
|
|
|
+# 检查是否有未提交的更改
|
|
|
+if ! git diff --quiet || ! git diff --cached --quiet; then
|
|
|
+ echo "❌ 检测到本地有未提交的改动,请先提交或暂存后再执行合并"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+# 更新本地分支
|
|
|
+echo "📦 更新本地分支..."
|
|
|
+git checkout prod && git pull origin prod || exit 1
|
|
|
+git 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 1
|
|
|
+else
|
|
|
+ echo "🔄 增量合并 dev..."
|
|
|
+ git merge dev --no-commit || exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+# 保留 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 在当前分支不存在,跳过"
|
|
|
+ fi
|
|
|
+done
|
|
|
+
|
|
|
+# 提交合并
|
|
|
+git commit -m "Merge dev into prod (keep prod config files)"
|
|
|
+
|
|
|
+# 推送确认
|
|
|
+read -p "🚀 是否推送到远程 prod 分支?(y/N) " confirm
|
|
|
+if [[ "$confirm" =~ ^[Yy]$ ]]; then
|
|
|
+ git push origin prod
|
|
|
+ echo "✅ 已推送到远程 prod 分支"
|
|
|
+else
|
|
|
+ echo "⏸ 已取消推送,可手动执行:git push origin prod"
|
|
|
+fi
|