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

Git合并遇冲突时,如何让Bash分支创建函数自动续行?

实现方案及修改步骤

核心逻辑

通过Git合并命令的返回值判断是否存在冲突:只有冲突发生时,才等待手动修复并提交;无冲突则直接跳过提交步骤,自动进入分支创建流程,彻底替代原来的固定等待输入。

具体Bash函数代码

function create_new_feature_branch() {
    # 切到目标feature分支
    git checkout feature-branch
    # 拉取最新的master代码
    git fetch origin master
    # 执行合并并捕获返回状态码
    git merge origin/master
    merge_result=$?

    # Git合并冲突时返回值为1,其他错误返回非0
    if [ $merge_result -eq 1 ]; then
        echo "合并出现冲突,请手动修复package.json和其他冲突文件"
        echo "修复完按任意键继续..."
        # 按任意键触发后续,无需回车
        read -n 1 -s -r
        # 暂存所有修复后的文件
        git add .
        # 提交冲突修复(信息可根据团队规范调整)
        git commit -m "Fix merge conflicts with master branch"
    elif [ $merge_result -ne 0 ]; then
        echo "合并出现未知错误,流程终止"
        return 1
    fi

    # 自动执行新分支创建流程
    # 这里的分支命名规则可按需修改
    new_branch="feature-$(date +%Y%m%d)-$(uuidgen | cut -c1-8)"
    git checkout -b $new_branch
    echo "新分支已创建:$new_branch"
}

关键细节说明

  • 状态码判断:git merge无冲突时返回0,冲突时返回1,其他异常(比如合并前未拉取、权限问题)返回非0值,靠这个精准控制流程分支。
  • 手动触发优化:只用read -n 1 -s -r,修复完按任意键就继续,不用像原来那样一直等输入,没冲突的时候根本不会走到这一步。
  • 自动提交处理:修复后自动git add .并提交,省得手动敲命令,提交信息可以改成你们团队常用的格式。
  • 分支命名:示例用日期+短随机串生成分支名,你可以换成符合你们团队规范的命名方式,比如加需求ID之类的。

额外优化小技巧

  • 减少package.json冲突:在项目根目录建个.gitattributes文件,加一行package.json merge=ours,让Git自动保留当前feature分支的package.json版本,不用每次手动改依赖版本。
  • 如果要指定特定依赖版本而不是全保留,还能写个小脚本,合并后自动替换package.json里的指定依赖字段,彻底省掉手动修复的步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:07:12