前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一行命令自动合并git代码 - shell脚本

一行命令自动合并git代码 - shell脚本

作者头像
沈宥
发布2022-05-09 21:23:45
6980
发布2022-05-09 21:23:45
举报

背景

QA维护了自己的分支 QAtujiabnb ,当有多个项目同时进行,且不断需要合并到QAtujiabnb分支时,手动合并效率太低,急需一个合并的脚本支撑高频率的合并。

根据平时合并的流程:拉取远端master分支代码 -> 将master分支新增代码合并到QAtujiabnb分支 -> 提交并推送代码到远端QAtujiabnb分支

注意问题

但是,在实现的过程中出现了几点问题:

1、未清除本地库,拉取提示需要先将本地代码贮藏提交

2、需要获取master分支最新提交的SHA1

3、合并后需要检查是否合并成功

代码语言:javascript
复制
检查本地版本库当前连接的远程版本库
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、当出现合并冲突时,需要手动解决。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从头开始学习测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档