GIT在多人开发的项目中很容易出现代码冲突以及开发不规范造成代码污染的问题,所以我们要制定一些约束来避免或减少出现此类问题
分支权限管理规范
创建多重开发环境,例如有线上环境、开发环境、测试环境。可以创建 master
、develop
,release
三个主分支。所有需要测试的功能提交合并至 release
分支,测试通过,将对应用户名/功能分支
代码合并至 develop
分支,且需要对分支进行权限管理。
master
分支:线上分支,只有项目负责人有权限合并代码,且只允许合并来自develop
分支代码,不得合并其他分支代码,不得随意修改
develop
分支:开发分支,只有项目负责人以及代码审核人员有权限合并代码,所有成员代码需要经过审核测试后才可以合并推送,不得随意修改用于检出
用户名/功能名
分支开发新功能。如开发完新功能合并至develop
过程中产生代码冲突,请对应开发成员在其对应用户名/功能分支名
分支上解决冲突提交测试,通过后再由审核人员合并至develop
分支
release
分支:测试分支,项目核心开发以及主程和运维有合并代码权限,其他成员需要提交pr
才可合并至release
分支,一般不允许随意修改只允许合并其他分支代码,如果多人测试环境发生代码冲突,可在
release
分支上解决冲突后提交
如develop
分支积压多项无需及时上线代码,可重新基于develop
分支创建release2
分支,测试服切换至release
分支即可
用户名/功能分支名
分支,成员开发新功能分支,需要以develop
分支检出并及时合并develop
分支新提交代码,开发完成提交pr
合并至release
分支,测试以及代码审核通过后可提交pr
与相关负责人合并至develop
分支
分支命名规范
所有功能开发都基于develop
分支使用用户名的方式创建新分支。例如要开发某新功能,则需要拉取最新的develop
分支,然后develop
分支上使用 git checkout -b 用户名/feature-功能名
的方式检出新分支(必要情况可携带开发日期格式分支名),在新分支上开发新功能。如功能上线合并至master
产生bug,修复bug则需要基于develop
检出新分支,命名规则用户名/fix_功能名
方式。
1 | $ git checkout develop |
分支合并规范
所有开发基于在develop
创建的新分支,及时拉取并合并develop
分支新提交代码,不允许合并release
分支提交至对应功能分支
,防止代码污染
1 | $ git checkout master |
谨慎操作
- 多人项目
develop
分支禁止使用rebase
变基操作,要保证代码可追溯保证代码提交记录完整性 develop
分支禁止使用reset
,只允许使用revert
对代码以新提交代码的方式做回滚操作- 所有代码检出、提交前必须
pull
,merge
最新develop
分支,如发生冲突及时解决冲突提交到对应功能分支 - 所有代码不允许删除,所有分支不允许删除保证代码提交记录完整性
- 一般情况不建议使用
git merge --squash
来合并代码,需要保证代码可追溯,如若开发人员产生多次提交必要情况可采用git merge --squash
来将多次提交合并一次新提交至develop
分支