GIT管理使用习惯及技巧

133 阅读2分钟

1.1 分支类型及角色

master分支(主分支)    稳定版本
develop分支(开发分支) 最新版本
release分支(发布分支) 发布新版本
hotfix分支(热修复分支)修复线上bug
feature分支(特性分支) 实现新特性
develop-xxx分支 (协作者分支)  基于develop的协作者分支
tag-年月日-版本号 (tag标签) 发布存档 

// 图例:

hotfix  --------------------------------O---->O---->O------------------->
                                        ⬆  Bugfix   |
                                        |           |
master  --O---------------------------->O(1.0.0)---------O(1.0.1)------->
          |                       |                 |
          ↓                       |                 |
develop --O-----O-----O---------------->O----------------O-------------->
      Feature+Bugfix  |           |  
                      ↓           |  
release --------------O-----O-----O------------------------------------->
                          Bugfix

1.2 开发新功能模块(新特性)流程

// 1. 切换分支
$ git checkout develop

// 2. 创建新特性(如:用户管理)
$ git checkout -b feature-20211023-user_manage develop
$ git push origin feature-20211023-user_manage

// 3. 开发完成并测试功能完整性后(合并feature分支到develop分支)
$ git checkout develop
$ git merge --no-ff feature-20211023-user_manage

// 3. 删除本地/远程feature分支
$ git branch -d feature-20211023-user_manage
$ git push origin :feature-20211023-user_manage

1.3 发布新版本

// 1. 切换分支
$ git checkout develop

// 2. 创建预发版本(仅供测试使用)
$ git checkout -b release-20211023-v0.0.1
$ git push origin release-20211023-v0.0.1

// 3. 合并release分支到master分支(测试通过后)
$ git checkout master
$ git merge --no-ff release-20211023-v0.0.1

// 3. 在master上创建标签(发布成功后)
$ git tag tag-20211023-v0.0.1  //git tag -a tag-xx-xx -m "xxxx日发布线上新功能(用户管理模块等)"
$ git push origin tag-20211023-v0.0.1

// 5. 删除本地/远程release分支
$ git branch -d release-20211023-v0.0.1
$ git push origin :release-20211023-v0.0.1

// 6. 删除本地/远端tag
$ git tag -d tag-20211023-v0.0.1
//$ git push origin :refs/tags/tag-20211023-v0.0.1  // 注意:一般不适用(用于保留历史版本)

1.4 问题修复(线上:hotfix / 预发版(或本地测试):bugfix)

1.4.1 线上 - hotfix分支

// 1. 基于已发布的tag标签(分支)创建hotfix修复分支(可更新版本号,如:v0.0.1 -> v0.0.2)
$ git branch hotfix-20211023-v0.0.2 tag-20211023-v0.0.1
$ git push origin hotfix-20211023-v0.0.2

未完待续...

1.4.2 预发版(或本地测试) - bugfix分支

// 1. 基于测试版/预发布的tag标签(分支)创建hotfix修复分支(可更新版本号,如:v0.0.1 -> v0.0.2)
$ git checkout -b bugfix-20211023-v0.0.2   release-20211023-v0.0.1
$ git push origin bugfix-20211023-v0.0.2

// 2. 本地bug修复完成继续测试(合并bugfix分支到develop分支)
$ git checkout release-20211023-v0.0.1
$ git merge --no-ff bugfix-20211023-v0.0.2

未完待续...

1.5 提交规范

# 1. 自动化提交规范
$ npm install -g commitizen
$ commitizen init cz-conventional-changelog --save --save-exact
$ git add .
$ git cz //命令取代git commit
$ git log
//docs(文档备注): 编写git提交规范
//为了更好的使用项目规范,故添加git提交规范

# 2. 设置git commit模板 (如果已使用自动化提交规范,则忽略)
//建立git提交模板文件
.git_template内容:
<新功能|修复bug|文档|样式>[界面优化]:修改主题样式
description

//设置模板
git config commit.template .git_template // 当前项目

//提交代码
git add .
git commit


# 4. 制定适合我们的<git commit>提交规范

//格式
type: description

如: <fix>修改:未知bug


//type 类型(type 是 commit 的类别,只允许如下几种标识)
fix: 修复bug
add: 新功能
update: 更新
style : 代码格式改变
test: 增加测试代码
revert: 撤销上一次的commit
build: 构建工具或构建过程等的变动,如:gulp 换成了 webpack,webpack 升级等

// description(对本次提交的简短描述\不超过50个字符)
推荐以动词开头,如: 设置、修改、增加、删减、撤销等