美文网首页
多人多功能gitlab代码管理策略

多人多功能gitlab代码管理策略

作者: coder爱唱歌 | 来源:发表于2020-10-26 17:10 被阅读0次

常用git命令

git remote -v 
git add remote upstream git@gitlab.xxx.com:hk-news/service-ipo-schedules.git
git remote rename origin upstream 
git add ./
git commit -m "fix:修改自动报盘bug"
git pull upstream master 
git push upstream dev 
git checkout -b feat-branch
git checkout feat-branch 
git branch -D feat-branch
git merge dev
git rm -r --cached .  
git log 
git reflog 
git reset --head HEAD^ 
git reset --head commit_id 

代码提交管理策略

1、仓库区分:

中央仓库:gitlab上公共的仓库 (upstream)
私人仓库:gitlab上每个人自己的仓库 (origin)
本地仓库:自己开发机器上的仓库 (local)

2、注意事项:

首先明确:

1.upstream的master代码和线上代码一致(这个分支代码变动就自动部署到线上)

2.upstream的dev分支和测试环境代码一致 (这个分支代码变动就自动部署到测试环境)

3.每开发一个功能在upstream上新建一个 `feat-` 的分支(例如ipo二期,feat-ipo-term2)

4.upstream的dev和master代码变动,都需要通过merge-request

5.commet的提交信息不能太过于简略

6.master代码变动需要打tag

7.为了方便一个项目多个功能同时开发,分开时间上线,我们模式是每个功能都是基于开一个分支,然后测试就把这个分支提到dev,上线就把这个功能提到master。功能之间相互不影响。

3、开发过程中代码提交流程(以hs-base-service项目为例):

1、拉取项目,并设置好2个远程
    1.git pull git@gitlab.xxx.com:s-base/hs-base-service.git
    2.git remote rename origin upstream 
    3.git remote add origin git@gitlab.xxx.com:huanglong/hs-base-service.git

2、分支准备,例如需要开发ipo-2功能
    1.git checkout master
    2.git pull upstream master
    3.git checkout -b feat-ipo-2

3、在本地 feat-ipo-2 分支上进行开发

4、提交代码(首先在origin和upstream上都新建一个feat-ipo-2分支)
    1.git pull upstream feat-ipo-2
    2.git pull origin feat-ipo-2 (这两步是同步代码,解决冲突)
    3.git push origin feat-ipo-2
    4.在origin的feat-ipo-2上发起meger request到upstream的feat-ipo-2

5、上测试或者上线
    1.feat-ipo-2功能如果需要上测试就从 feat-ipo-2发起 meger request到dev
    2.feat-ipo-2功能如果需要上正式就从 feat-ipo-2发起 meger request到master
    3.上线正式成功后,local和origin都把feat-ipo-2分支merge到master,删除所有feat-ipo-2分支。
    4.基于master代码打tag

注意:
1.如果本地已经有那个项目了,可以省略步骤1
2.每次merge request注意在gitlab上对比本次change

4、线上紧急bug修复

1.首先pull upstream的master到本地的master,保证和线上代码一致
2.然后基于这份master代码进行修改
3.修改完毕后,就push到origin的master
4.origin的master发送merge request到upstream master,触发自动部署,自动上线

代码提交msg填写规范

对提交记录做些清楚的描述,起码一眼能看出来大致改了什么

规范:commit-type : 内容

commit-type有以下几种:

feat:新特性,新增接口,新增工具类等
fix:修改bug
refactor:代码重构
perf:性能优化
docs:文档修改
chore:其他修改

示例:

分k接口性能优化:git commit -m "perf:分k接口性能优化"

几种场景下的代码管理

一、线上bug (例如ipo数据重复)

1、首先保证本地和upstream master代码同步
    1.git checkout master 
    2.git pull upstream master 
    3.git checkout -b fix-ipo-repeat

2.在fix-ipo-repeat上修改bug,然后在upstream上基于master新建 fix-ipo-repeat 分支
    4.git pull upstream  fix-ipo-repeat
    5.git push upstream fix-ipoo-repeat

3.把upstream fix-ipoo-repeat发起merge request到master,触发自动部署,上线。

4.解决完毕,删除fix-ipoo-repeat分支。

注意:
- all和要修改的服务都需要像这样切换分支

二、当功能feat-1和feat-2合到dev的时候冲突

场景描述:feat-1和feat-2都是基于master拉取的代码,feat-1和feat-2都提到测试的时候,例如feat-1的代码先提测,feat-1合到dev了,然后feat-2提测,feat-2提到dev的时候和feat-1冲突了。站在feat-2的角度,解决如下

1、先确定本地feat-2和upstream的feat-2先同步
    1.git checkout feat-2
    2.git pull upstream feat-2
    3.git push upstream feat-2

2、然后在本地dev解决冲突
    1.git checkout dev 
    2.git pull upstream dev(pull后,本地dev包含了feat-1的代码)
    3.git merge feat-2 (合并feat-1代码,然后解决冲突)
    4.git push upstream dev (这时候,dev上就包括了feat-1和feat-2的代码了)
    
注意:
这种方式虽然保证了feat-1和feat-2功能的顺利提测,但是feat-1和feat-2的冲突并没有解决。上线的时候,也需要这种方式解决冲突。

相关文章

网友评论

      本文标题:多人多功能gitlab代码管理策略

      本文链接:https://www.haomeiwen.com/subject/gmtzmktx.html