为了更好的团队协作和项目流程管理,可以针对 git 做以下两个规范。

git flow 规范分支管理:

GitFlow 是一套基于 git 的工作流程规范,它定义了一个严格的如何建立分支的模型。

它有以下几个优势:
1.还处于半成品状态的feature不会影响到主干。
2.各个开发人员之间做自己的分支,互不干扰。
3.主干永远处于可编译、可运行的状态,保障项目外网稳定。

GitFlow 的分支约定:

Master 分支

管理生产环境的代码,只能合并 Release 分支,也不能在这个分支直接修改。所有在 Master 分支上的Commit 应该 Tag

Develop 分支

主开发分支,这个主要合并其他成员分支,比如 Feature 、Hotfix 分支,包含所有要发布到下一个Release 的代码。

Feature 分支

新功能模块分支,完成后,我们合并回Develop分支进入下一个Release。

Release 分支

当需要一个发布一个新 Release 的时候,基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支。
我们可以在这个Release分支上测试,修改Bug等。同时,其它开发人员可以基于开发新的Feature (记住:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支)

Hotfix 分支

当我们在 Master 分支发现 Bug 时,我们可以建一个 Hotfix 分支。
Hotfix 分支基于 Master 分支创建,开发完后需要合并回 Master 和 Develop分支,同时在 Master 上打一个tag

分支、 tag 命名规范:

主分支名称:master
主开发分支名称:develop
标签(tag)名称:v##,如:v1.0.0
新功能开发分支名称:feature/##,如:feature/16spro
发布分支名称:release/##,如:release/1.0.0
维护分支名称:hotfix/## ,如:hotfix/fix-style-bug

git tag 常用命令

git tag <tagname> 用于新建一个标签,默认为HEAD,也可以指定一个commit id;

git tag -a <tagname> -m "blablabla..." 可以指定 tag 信息;

git tag 可以查看所有 tag。

git tag -d <tagname> 删除指定 tag(本地)

git push --tags 推送本地所有 tag 到远程

git commit 规范

  • feat: 添加新特性
  • fix: 修复bug
  • docs: 仅仅修改了文档
  • style: 仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑
  • refactor: 代码重构,没有加新功能或者修复bug
  • perf: 优化相关,比如提升性能、体验
  • test: 测试、或者增加测试用例
  • chore: 改变构建流程、或者增加依赖库、工具等
  • revert: 回滚到上一个版本

另:git pull 时,尽量带 –rebase,这会使 git log 树更加简洁美观。