常用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的冲突并没有解决。上线的时候,也需要这种方式解决冲突。
网友评论