Git
GitFlow规范
1 | # 1 Master 分支 |
常驻分支只有两个master、develop;
其中master是最新的,发布后需要在master上打版本tag,develop数据开发分支 临时分支有三个Release、Feature、Hotfix;
其中release属于开发阶段用于质量测试的临时分支,feature属于开发过程中新作的功能,hotfix属于发布版本后再发现的问题修复
commit 规范
格式
1 | <type>(<scope>): <subject> |
::: tip
type
- feat:新特性
- fix: 修复bug
- docs: 文档
- style:格式
- refactor:重构(不是新增功能,也是修改bug的代码变动)
- perf:优化相关,比如提升性能、体验
- test:增加测试
- chore:构建过程或辅助工具的变动
- revert:回滚到上一个版本
- merge:代码合并
- sync:同步分支代码
scope
- scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同
subject
- subject是 commit 目的的简短描述,不超过50个字符
body
- 详细说明,可以省略
footer
- 须关闭的Jira号或者链接
:::
commit Tips
冒号后和’subject’要加一个空格,目的是在IDEA历史记录里看上去干净
1 | feat: 用户查询接口开发 Close#RM-23412 |
如果subject无法说明本次提交可以考虑body描述详细信息
1 | feat: 客户交易金额同步至风控平台 |
如何优雅的merge
(git pull –rebase)
场景:同事tom和自己对同项目代码进行修改,自己为了避免冲突报错,一般会先pull再merge,这样操作并没毛病。
问题:但是会在git记录中产生大量的merge记录,每次过滤历史信息时会有很多无效信息
解决方法:使用git pull --rebase
命令,将自己的提交放一边,然后拉去同事tom记录,
之后在tom的记录后面衔接自己的提交,形成线行记录,避免了无效的merge记录。
IDEA在git Update Project时候,选择Rebase就行。
关于git reset
和git revert
git reset 适合本地修正,历史记录会被改写。
git revert 适合多人协作,不改写历史。
reset
1 | #有以下提交记录: |
revert
1 | #有以下提交记录: |
场景对比
假设你在开发过程中发现 D 提交引入了严重的bug:
在本地开发分支(未推送远程)
使用 git reset –hard HEAD~1,快速撤销。
在共享分支(已推送远程)
使用 git revert HEAD,生成新的撤销提交,避免影响其他开发者。
[参考]