信息提交格式为
<commit-type>[(<scope>)]: <commit-msg> (#禅道号)
commit-type:必填项,为对应提交类型,这里约定了feat,fix,docs,style,refactor,perf,test,build,ci,chore,types,wip,revert这些类别,具体代表的含义可以查看下面的提交类别说明。scope:可选必填项,用于描述改动的范围,如果一次 commit 修改多个模块,建议拆分成多次 commit,以便更好追踪和维护。commit-msg: 必填项,为提交信息的简要说明。- 禅道号: 必填项,每一次提交必须对应一个禅道号,如果某次修改没有禅道号对应,请使用
#000。需要注意的是,禅道号必须使用#开头,并且一个提交只能写一个禅道号,在有多个禅道 bug 的情况下,请将不同的 bug 进行拆分提交。
提交示例
# 在F9模块添加一个新功能
:冒号后面有空格,(#000)前有空格
git commit -m "feat(f9): F9中添加融资图谱模块 (#123)"
# 不指定具体模块
git commit -m "fix: 修复xxx不显示问题 (#666)"
# 当没有禅道号对应时
git commit -m "fix: xxx修复 (#000)"提交类别
| 类别 | emoji | 含义 |
|---|---|---|
feat |
✨ | 新功能 |
fix |
🐛 | 修复 bug |
docs |
📝 | 仅仅修改文档,比如 README, CHANGELOG, CONTRIBUTE 等等 |
style |
🎨 | 不改变代码逻辑 (仅仅修改了空格、格式缩进、逗号等等) |
ui |
💄 | 样式调整 |
refactor |
♻️ | 重构(既不修复错误也不添加功能) |
perf |
⚡️ | 优化相关,比如提升性能、体验 |
test |
✅ | 增加测试,包括单元测试、集成测试等 |
build |
👷 | 构建系统或外部依赖项的更改 |
ci |
💚 | 自动化流程配置或脚本修改 |
chore |
🔩 | 非 src 和 test 的修改,例如构建过程或辅助工具的变动 |
types |
🏷️ | 添加或更新类型 |
wip |
🚧 | 开发中 |
revert |
⏪ | 恢复先前的提交 |
typo |
⏪ | 拼写错误修复 |
分支说明
项目开发到发布会使用到如下分支:
- master: 线上分支,预发环境测试通过后,将此分支代码编译发布到线上环境;
- dev: 开发分支,开发人员每天都需要拉取/提交最新代码的分支;
- test: 测试分支,开发人员开发完并自测通过后,发布到测试环境的分支;
- bugfix: bug 修复分支,线上环境出现 bug,需要切换到 bugfix 分支进行修复;
- feature: 功能开发分支,以功能进行切分,创建分支;
开发流程
- 开发人员每天都需要拉取/提交最新的代码到
dev分支; - 开发人员开发完毕,开始集成测试(
dev),测试无误后提交到test分支并发布到测试环境,交由测试人员测试; - 测试通过后,发布到
master分支上并打上标签(tag); - 如果线上分支出了 bug ,这时候相关开发者应该基于预发布分支(没有预发环境,就使用
master分支),新建一个 bug 分支用来临时解决 bug ,处理完后申请合并到 预发布 分支。这样做的好处就是:不会影响正在开发中的功能。
- 如果自己分支不干净时,使用
git stash添加暂存,如果是干净的可以跳过这一步; - 在分支上执行
git pull origin dev --rebase,它的作用是将dev分支上的变动rebase到自己的分支上; - 如果出现冲突,解决后
git rebase --continue如果放弃此次 reabase,使用git rebase --abort取消; - 如果执行了第一步中的
stash,此时还需要执行git stash pop恢复暂存的修改,如未执行步骤 1 则忽略,如出现冲突则继续解决冲突; - 最后提交代码到远端仓库
git push origin [branch-name]; - 到网页上,将自己分支的最新代码与
dev对比,建一个 PR; - 预览当前 PR 的内容,并 merge 到
dev分支。
- 解决 conflict,然后继续 rebase
git rebase --continue - 放弃此次 rebase 操作
git rebase --abort
- 将代码缓存到暂存区
git stash - 将暂存的代码取出来
git stash pop
- 使用
git reflog获取所有历史操作日志 - 使用
git cherry-pick [reflog-id]恢复某个分支的代码
# 默认在 HEAD 上创建一个标签
$ git tag v1.0
# 指定一个 commit id 创建一个标签
$ git tag v0.9 f52c633
# 创建带有说明的标签,用 -a 指定标签名,-m 指定说明文字
$ git tag -a v0.1 -m "version 0.1 released"
# 查看所有标签
# 注意:标签不是按时间顺序列出,而是按字母排序的。
$ git tag
# 查看单个标签具体信息
$ git show <tagname>
# 推送一个本地标签
$ git push origin <tagname>
# 推送全部未推送过的本地标签
$ git push origin --tags
# 删除本地标签
# 因为创建的标签都只存储在本地,不会自动推送到远程。
# 所以,打错的标签可以在本地安全删除。
$ git tag -d v0.1
# 删除一个远程标签(先删除本地 tag ,然后再删除远程 tag)
$ git push origin :refs/tags/<tagname>更多详细用法请参考:https://www.liaoxuefeng.com/wiki/896043488029600/902335212905824