1. Git flow 规范
Git
作为一个源码管理的工具,不可避免的会涉及到多人的协作,协作必须有一个规范的工作流程,让大家有效的合作使得项目井井有条的发展下去。
工作流程在英语中叫 Workflow
。
原意是水流,比喻项目想水流哪像自然的流动,不会发生冲击、对撞甚至旋涡。
Git flow
是最早诞生,并广泛采用的一种工作流,它采用了功能驱动开发(Feature-driven development,简称FDD),它指的是需求是开发的起点,现有需求再有功能分支
Git flow 最主要的特点有两个
- 项目始终存在两个长期分支
master(主分支)
和develop(开发分支)
- 除此之外,还有三个短期分支
feature(功能分支)
hotfix(补丁分支)
release(预发分支)
分支 | 描述 |
---|---|
master | 产品分支:只能从其他分支合并内容,不能再这个分支直接修改。合并到 maters 上的 commit 只能来自 release 分支或 hotfix 分支。 |
develop | 开发主干分支:基于 master 的 tag 建立,主要用来暂时保存开发完成而又未发布的 feature 分支内容,以及 release 和 hotfix 的补充内容 |
feature | 功能分支:一般一个新功能对应一个功能分支,从而和已经完成的功能隔离开来,而且只有在新功能完成开发的情况下,其对应的 feature 分支才会合并到主开发分支( develop 分支)上 |
release | 预发分支:当需要发布时,我们从 develop 分支创建一个 release 分支,然后这个release 分支会发布到测试环境进行测试,如果发现问题就在这个分支直接进行修复。发布结束后,这个 release 分支会合并到 develop 和 master 分支,从而保证不会有代码丢失。 |
hotfix | 补丁分支:主要用于紧急修复一些 Bug 。会从 master 分支上的某个 tag 建立,修复结束后再合并到 develop 和 master 分支上 |
2. Git commit 规范
写好 Git commit
能提供更多的而历史信息,方便快速浏览,还能过滤某些 commit
(比如文档改动),便于快速查找信息。
如何优雅写好Git commit规范呢? 现在业界使用比较广泛的是 Angular规范
<type>(<scope>):<subject> # 标题行:必填描述主要修改类型和内容。
// 空行
<body> # 主题内容:描述为什么修改,做了什么样的修改,以及开发的思路等等。
// 空行
<footer> 放 Breaking Changes 或 Closed Issued
1. type 类型有:
Type | 作用 |
---|---|
feat | 新增特性 (feature) |
fix | 修复 Bug(bug fix) |
docs | 修改文档 (documentation) |
style | 代码格式修改(white-space, formatting, missing semi colons, etc) |
refactor | 代码重构(refactor) |
perf | 改善性能(A code change that improves performance) |
test | 测试(when adding missing tests) |
build | 变更项目构建或外部依赖(例如 scopes: webpack、gulp、npm 等) |
ci | 更改持续集成软件的配置文件和 package 中的 scripts 命令,例如 scopes: Travis, Circle 等 |
chore | 变更构建流程或辅助工具(比如更改测试环境) |
revert | 代码回退 |
- scope 影响范围
比如L route,component,utils,build
- subject:commit的描述
- body:commit具体修改内容,可以分为多行
- footer: 一些备注
2. commitizen 工具
1. 简介commitizen git commit
的格式化工具,为我们提供标准化的 commit
信息。 帮助我们统一项目commit
, 便于信息的回溯或日志的生成。# commit message 格式
2. 安装
npm install -g commitizen cz-conventional-changelog
echo '{"path": "cz-conventional-changelog"}' > ~/.czrc
3. 使用
在文件夹中修改内容
git add *
git cz
具体操作步骤可以参考 规范(三):从 0 搭建 React+TS 项目 第七章 Git Commit 规范