目前需求管理简介
- 需求管理使用的是JIRA,(忽略缺陷直接关联到业务需求的场景)
- git提交信息校验,必须以以下固定格式提交信息
- 子任务: R + 需求编号 + 提交信息
- 缺陷:B + 缺陷编号 + 提交信息
现状及问题
-
子任务及缺陷在JIRA上的关联关系,如何映射到git提交记录上?
提交信息包含类型,编号,提交注释,但是没有关联上子任务和缺陷,这种关联关系在jira上是存在的
-
一个子任务及缺陷可能存在多次提交记录,在这提交记录中,可能会穿插他人的提交信息,类似如下场景:
- 如果要查看提交记录中某次子任务的提交代码,会比较困难,需要从可能存在的多个提交(这多个提交还需要从log中过滤),并且这多个提交可能对于部分代码重复修改
优化思路
git rebase 自动压缩处理补丁提交及压缩提交
创建高内聚的提交记录
对于子任务:
git commit --fixup=<commit>
对于同一个子任务,非首次提交,用补丁的形式处理提交信息 (<commit>子任务首次提交hash值)
对于缺陷:
git commit --squash=<commit>
提交信息时使用上述参数,将缺陷与子任务关联上(<commit>子任务首次提交hash值)
git rebase -i --autosquash <commit>^
将fixup! ,squash! 标记的提交记录,rebase合并到commit中;(<commit>子任务首次提交hash值)
【fixed!】 rebase后, 提交信息会忽略
【squash!】rebase后,缺陷的提交信息会压缩到commit原提交信息中
rebase之后的优点:
- rebase操作之后,一个子任务只有一次提交
- 在提交信息中将子任务及缺陷关联上了
- 代码回滚,代码review,或者查看某次子任务的相关代码时,简单便捷
git rebase -i --autosquash <commit>^ 执行时机
rebase最好在自己未提交的分支上进行,不要影响到其与同事的提交历史记录
异常:
使用 --squash 时,如果git commit -a --squash=****** -m "提交信息",todo list中会自动标明squash
如果是git commit -a --squash=******,编辑提交信息,todo list中不会自动标明squash,rebase时需要手动处理
e.g.