You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Shell/Bash脚本:将origin/master合并至所有远程分支

Bash Script to Merge origin/master into All Remote Branches

我帮你写了一个实用的Bash脚本,能完成把origin/master合并到所有远程分支的需求,同时我会拆解每一步的作用,方便你根据自己的场景调整:

#!/bin/bash

# 定义临时克隆目录
TMP_FOLDER="tmp-clone"

# 如果临时目录存在,先删除避免残留旧数据
if [ -d "$TMP_FOLDER" ]; then
    rm -rf "$TMP_FOLDER"
fi

# 克隆远程仓库到临时目录(替换成你的实际仓库地址)
git clone "你的Git仓库URL" "$TMP_FOLDER"

# 进入临时目录,失败则退出脚本
cd "$TMP_FOLDER" || exit 1

# 获取所有需要处理的远程分支:排除HEAD和master,去掉origin/前缀
REMOTE_BRANCHES=$(git branch -r | grep -v 'HEAD\|master' | sed 's/origin\///')

# 循环处理每个目标分支
for BRANCH in $REMOTE_BRANCHES; do
    echo "开始处理分支: $BRANCH"
    
    # 切换到目标分支,失败则跳过当前分支
    git checkout "$BRANCH" || { echo "切换分支$BRANCH失败,跳过"; continue; }
    
    # 拉取该分支的最新远程代码
    git pull origin "$BRANCH"
    
    # 合并origin/master到当前分支
    git merge origin/master
    
    # 检查合并是否成功:无冲突则推送到远程,有冲突则提示手动处理
    if [ $? -eq 0 ]; then
        git push origin "$BRANCH"
        echo "分支$BRANCH合并并推送成功"
    else
        echo "分支$BRANCH合并出现冲突,请手动解决后重新执行脚本"
        # 若需要遇到冲突就终止脚本,可取消下面的注释
        # exit 1
    fi
    
    echo "------------------------"
done

# 返回上级目录并清理临时文件
cd ..
rm -rf "$TMP_FOLDER"

echo "所有分支处理完成!"

脚本关键细节说明:

  • 干净环境保障:每次运行先清理旧的临时目录,确保操作基于最新的仓库状态
  • 分支精准筛选:通过grep排除不需要的HEAD和master分支,用sed剥离origin/前缀,得到纯粹的分支名
  • 容错处理:切换分支失败时自动跳过当前分支,合并冲突时给出明确提示,避免脚本直接崩溃
  • 自动清理:操作完成后自动删除临时目录,保持本地环境整洁

使用提示:

  1. 记得把脚本中的你的Git仓库URL替换成实际的仓库地址
  2. 建议先在测试仓库验证脚本功能,避免误操作影响生产分支
  3. 若合并冲突,解决后可以单独重新处理该分支,或者直接重新运行整个脚本

内容的提问来源于stack exchange,提问作者casparjespersen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:43:16