1. 时序图

sequenceDiagram
master-->>master:master最新版本tag为v1.0
master->>dev: master分支Merge到dev
dev->>20230220-name-feature1: 基于dev创建20230220-name-feature1分支
dev->>20230222-name-feature2: 基于dev创建20230222-name-feature2分支
20230220-name-feature1-->>20230220-name-feature1: 开发人员A开发
20230222-name-feature2-->>20230222-name-feature2: 开发人员B开发
20230220-name-feature1-->>dev: 20230220-name-feature1分支合并到dev分支
dev-->>dev: 开发人员A修复20230220-name-feature1功能bug
20230222-name-feature2-->>dev: 20230222-name-feature2分支合并到dev分支
dev-->>dev: 开发人员B修复20230222-name-feature2功能bug
dev-->>dev: 该阶段所有功能开发完毕,部署内网web平台
dev-->>master: 测试完毕后,dev分支合并到master
master-->>master: 打tag v1.1,部署外网web平台
master->>hotfix: 基于master分支v1.1创建hotfix分支
hotfix-->>hotfix: 完成bug修复
hotfix-->>dev: hotfix分支合并到dev
dev-->>dev: 重新部署内网web平台
hotfix-->>master: hotfix分支合并到master
master-->>master: 打tag v1.1.1,重新部署外网web平台
时序图

2. 分支结构

分支说明举例
master代码的主分支,存放稳定代码的保护分支,不允许开发人员随意合并,用于发布外网web平台,通过tag区分版本
dev日常开发分支,达到稳定状态可以用于发布内网web平台,测试后可以被合并入master分支
20230203-name-feature新功能分支,分支名形式为日期+开发人员姓名拼音+功能简单英文描述20230203-zouxiongbin-QRcode
hotfixbug修复分支

3. 开发流程

  1. 管理员基于master稳定分支先打tag ,如v1.0
  2. 管理员从master分支合并到dev分支
  3. 开发人员A基于dev分支创建20230220-name-feature1分支
  4. 开发人员B基于dev分支创建20230222-name-feature2分支
  5. 20230220-name-feature1分支开发完毕,开发人员A自测
  6. 本地自测完毕后,开发人员A将20230220-name-feature1分支合并到dev分支
  7. 20230222-name-feature2分支开发完毕,开发人员B自测
  8. 本地自测完毕后,开发人员B将20230222-name-feature2分支合并到dev分支
  9. 管理员按计划使用dev代码部署内网web平台,开始系统测试
  10. 全部测试完成后,管理员将dev分支代码合并到master分支,master分支打tag,如v1.1,部署外网web平台
  11. 如果出现紧急bug,管理员从master新建一个hotfix分支,开发人员修补的代码需要提到该分支
  12. 测试通过后,管理员将hotfix分支合并到master分支和dev分支,master分支打tag,如v1.1.1,重新部署内网web平台和外网web平台

4. 提交信息规范建议

代码需要提交到对应分支,提交前请先执行git pull origin dev

git commit -m "[type]:message"

type类别说明:

  • feat:添加新功能

  • fix:修复bug

  • perf:优化相关,比如提升性能、体验

  • docs:文档

  • style:格式,不影响代码运行的变动

  • test:增加测试用例

  • chore:构建过程或辅助工具的变动

  • revert:回滚到上一个版本

  • merge:代码合并

message必须描述清楚主要变更内容,也可直接使用tapd任务单链接,如:git commit -m “[feat]:【【后台】1.4-后台封榜、后台解封】https://www.tapd.cn/30292197/prong/stories/view/1130292197001114925

5. Git常用指令

# 在当前目录新建一个git代码库
git init
# 下载一个项目和它的整个代码历史
git clone [url]
# 显示当前git配置
git config --list
# 设置提交代码时的用户名字
git config user.name "[name]"
# 设置提交代码时的用户名字
git config user.email "[email address]"
# 查看所有本地和远程分支
git branch -a
# 新建一个分支,与指定的远程分支建立追踪关系
git branch --track [branch] [remote-branch]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 拉取远程dev分支最新代码
git pull origin dev
# 将代码提交到远程branch分支
git push origin [branch]
# 删除远程分支
git push origin --delete [branch-name]
# 将所有未提交的修改保存到堆栈中
git stash save "desc"
# 查看堆栈中保存的所有stash
git stash list
# 应用堆栈中指定stash内容到当前目录
git stash apply stash@{xx}
# 查看堆栈中最新保存的stash和当前目录的差异
git stash show stash@{xx} -p