一般来说,团队中git永久存在的分支有且只有2个:master
分支和 develop
分支。
git仓库应该有且仅有一个主分支。所有提供给用户使用的正式版本代码,都应在这个主分支上发布,以确保这个分支上的每一个版本永远是最正确、最完整的,直接拿去不做任何变更就能正常使用。
与此同时,master
分支通常禁止开发人员直接修改代码,它应该只能从其他分支上合并版本过来。
develop
分支应该视为日常开发的分支,它的代码应该是永远最全最大合集。
每当临时分支上的功能点开发完成后都应立即提交至 develop
分支上,然后 develop
分支进行编译验证和集成测试,以确保集成的代码完整、正确。
因此,一般来说持续集成等自动化手段都应针对该分支建立,比如 Jenkins
、Selenium
等 CI 工具通常监测 develop
分支的代码变更,一旦有新的commit,那就自动启动Jenkins的代码拉取、编译、测试、输出测试报告、发送邮件通知等一系列自动化过程,从而实现代码管理的全程自动化。
以上涉及的 master
和 develop
分支属于git库中永久存在的分支。除此之外,根据需要通常还会建立很多临时性分支,通常如下:
feature-*
功能分支(也叫特性分支)hotfix-*
热修复分支
feature
分支一般作为小功能点或模块的独立分支,从 develop
分支拉出来,当功能特性开发完成后就要合并回 develop
分支,最后删除该 feature
分支。
hotfix
分支作为线上问题的修复分支,一般从 master
分支直接拉出来,当bug修复完成验证无误后并入 master
分支,同时推送到 develop
分支,以及其他所有临时分支,确保所有分支都有线上问题的修复代码。