背景
QA维护了自己的分支 QAtujiabnb ,当有多个项目同时进行,且不断需要合并到QAtujiabnb分支时,手动合并效率太低,急需一个合并的脚本支撑高频率的合并。
根据平时合并的流程:拉取远端master分支代码 -> 将master分支新增代码合并到QAtujiabnb分支 -> 提交并推送代码到远端QAtujiabnb分支
注意问题
但是,在实现的过程中出现了几点问题:
1、未清除本地库,拉取提示需要先将本地代码贮藏提交
2、需要获取master分支最新提交的SHA1
3、合并后需要检查是否合并成功
检查本地版本库当前连接的远程版本库
git config remote.origin.url
把远程版本库的变化同步到本地
git fetch origin
获取 master 分支当前的SHA1
SHA_master=git rev-parse origin/master^{}
获取当前分支名
git checkout ${work_branch}
current_branch=`git symbolic-ref --short -q HEAD`
清除当前库中未提交的变更
git reset --hard
清除本地库中构建过程生成的中间产物
git clean -dqxf
拉取代码
git pull
检查主干上的提交是否都已合并到QA分支
exist=$(git log TUJIA-9969_orderdetail |grep f1ae5a4707ef0e2cf25c95382ad62706eb9468f8)
如果未合并master,先merge(这里有个判断的逻辑,请见代码)
git merge --no-ff --commit --log origin/master -m "git merge origin/master"
合并项目分支
git merge --no-ff --commit --log origin/${develop_branch} -m "git merge origin/${develop_branch} "
必要的log输出,这里选择的是一天内的log
git_log=`git --no-pager log --pretty=format:"%an%x09%ad%x09%s" --date=format:'%m/%d %H:%M' --after="yesterday"`
大功告成,推到远端
git push
备注
代码地址
https://github.com/Shemiou/Shell/blob/master/GitMergeBranch.sh
P.S.
1、代码里是有两个主项目,而前端项目又有两个子项目。
2、当出现合并冲突时,需要手动解决。