赞
踩
目前使用最多的是Angular 规范,在功能上能够满足开发者 commit 需求,在格式上清晰易读。
Commit Message 包含三个部分,分别是 Header、Body 和 Footer,格式如下:
<type>[optional scope]: <description>
// 空行
[optional body]
// 空行
[optional footer(s)]
[optional scope]后必须紧跟冒号 ,冒号后必须紧跟空格
看一下Angular开发者们的提交
Header 部分只有一行,包括三个字段:type(必选)、scope(可选)和 subject(必选)。
为了方便记忆,我们可以把type归为:
类型 | 类别 | 说明 |
---|---|---|
feat | Production | 新增功能 |
fix | Production | bug修复 |
perf | Production | 提高代码性能的变更 |
style | Development | 格式化代码 |
refactor | Production | 其他的代码变更,不属于feat、fix、perf、style例如代码简化、重命名变量、删除冗余代码 |
test | Development | 新增或修改测试用例 |
ci | Development | 持续集成和部署相关的变动 |
docs | Development | 文档类更新 |
chore | Development | 其他类型,比如构建流程、依赖管理或者辅助工具的变动 |
type没有必须这样选择,在项目中只要保证大家使用的的type一致就好了
scope(可选):scope 是用来说明 commit 的影响范围的,在项目初期,我们可以设置一些粒度比较大的 scope,比如可以按组件名或者功能来设置 scope;后续,如果项目有变动或者有新功能,我们可以再用追加的方式添加新的 scope。当然只要团队成员定一个标准即可
subject: 是 commit 的简短描述,必须以动词开头、使用现在时。比如,我们可以用 change,却不能用 changed 或 changes,而且这个动词的第一个字母必须是小写。通过这个动词,我们可以明确地知道 commit 所执行的操作。此外我们还要注意,subject 的结尾不能加英文句号。
Header 对 commit 做了高度概括,可以方便我们查看 Commit Message。而Body测试对本次提交的详细描述,格式比较自由,可选,要包括修改的动机,以及和跟上一版本相比的改动点。
可以根据需要来选择,主要用来说明本次 commit 导致的后果。在实际应用中,Footer 通常用来说明不兼容的改动和关闭的 Issue 列表
git rebase -i 进入一个vim编辑界面
这个交互界面会首先列出给定之前(不包括,越下面越新)的所有 commit,每个 commit 前面有一个操作命令,默认是 pick。我们可以选择不同的 commit,并修改 commit 前面的命令,来对该 commit 执行不同的变更操作
git rebase 支持的变更操作如下:
命令 | 目的 |
---|---|
p,pick | 不对该commit做任何操作 |
r,reword | 保留该commit,但是修改提交信息 |
e,edit | 保留该commit,但是rebase时会暂停,允许你修改这个commit |
s,squash | 保留该commit,但是会将当前commit与上一个commit合并 |
f,fixup | 与squash相同,但不会保留当前commit的提交信息 |
x,exec | 执行其他的shell命令 |
d,drop | 删除该commit |
留一个pick,其他的改为squash,然后:wq保存即可
合并完成:
当然还有一个种方式就是,先进行版本回退然后在重新提交,也可以达到commit合并的效果
在idea中下载Git Commit Template插件
当提交代码时选择:
可以直接在界面中操作提高效率
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。