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
相关产品推荐
相关产品推荐

