你们是怎么使用git管理代码分支的?
你们是怎么使用git管理代码分支的?
题眼:不能以八股文方式回答。过程就是结果。
一般公司使用git主要用来搭建一个公司级的代码库,便于代码的存储和管理。有些路子特别野的公司,会要求运营策划等团队也要学会用git来管理公共文档。
使用git管理分支主要是四件事:
- 出现新需求时,创建分支,专事专办;开发测试完成时,合并分支,走CICD准备发布。
- 代码出现冲突的时候,由相关同事解决冲突并合并分支。
- 分支完成使命后,正确的删除分支,保证仓库干净整洁,便于管理。
- 权限管理,使无关人员不能随意浏览核心代码;使核心人员有权操作生产分支。
参考答案:
我们用的仓库是自己搭建的gitlab。部门有一个新员工入职必读的文章,里面有详细的规范,教新来的同学如何使用git,印象很深刻。它要求新来的员工,无论职位高低,试用期的时候都不能直接将自己的分支合并到master上,由打包权限但是没有发布权限。
然后还有明确的命名要求,比如说,新需求下来了, 需要创建分支,那么就要按照dev_需求编号_日期来创建,然后开发人员,在这个分支上按照dev_姓名全拼_日期来命名自己的开发分支,这样比较好管理。另外的话,自己在开发中的commit日志可以随便写,比方说公司要求每天下班前一定要提交下代码,这个日志可以随便写,但是最后经过测试准备合并的代码需要写明白是哪个模块的代码。其他的,如果是修BUG,就用fix开头,如果是优化代码就用opt开头。
仓库里有几个分支是不能动的,pre是固定预发布环境的分支,基本上是和master分支保持一致的。然后同一时间只能有一个需求上预发布测试,不能同时测试多个需求。test开头的分支是测试环境的,可以多个需求一起测,但是经常出现其他同事把我的代码顶掉的情况。所以,后面又有了新要求,test环境测试前,需要在群里说一下,时间和测试的内容,避免互相冲突。
有些时候会出现代码冲突,这个时候就比较麻烦了。(参考解决冲突)
再然后,我们新员工入职的时候,有简单介绍过git命令的使用,比如pull,push,add,commit,checkout,merge等等,但是到了项目组开始上手写代码的时候,我们导师直接就说,以后最好不要用命令行,尤其是不熟悉的命令行。建议使用goland自带的图形界面管理分支,避免出现误操作,导致代码回滚或者异常的情况。
最后的话,我们这边每次开发完成后,会现在本地进行测试,没啥问题了申请合并到test分支上,上测试环境跑一跑。如果都没啥问题,就可以准备上PRE测试了。如果PRE也没啥大问题,就可以准备合并master了,提交合并请求前,gitlab上有很多流程,比如说自动测试,回归测试用例等,还有代码风格检查,拼写检查等等,还会检查某些函数还有包,如果出现完全没有人调用的代码,他会提示,让删除。一开始我很不理解, 开发测试代码其实花不了多久,走这个流程,改代码也要花好长时间。然后,我的导师跟我说,以前出现过事故,有个朋友用了一个从来没有使用过的函数,结果panic了,写这个函数的人早都已经离职了。我不知道这个朋友是不是他自己。
