背景
随着团队的扩大,多人协作必不可少,其中代码管理更是重中之重,高效且规范的代码管理方案是必不可少的,否则面临的就是无尽的 conflict 和无从下手的 commit log
目标
- 建立完整的 Git 工作流,包括分支使用、
commit log
规范、tag
规范等 - 为了规范 Git commit 日志标准,便于后续代码 review,版本发布以及追溯和理解提交历史等一系列事情。
代码分支管理以及使用
本文介绍的是Gitflow Workflow,仅仅作为指导,不做强求,有不同的意见,你说的都对!
分支介绍
分支名称 | 分支说明 |
---|---|
Master | 生产分支,只能从其他分支合并,不能直接修改 |
Develop | 主开发分支,包含所有要发布到下一个 Release 的代码,该分支主要合并其他分支内容 |
Release | 发布分支,基于 Develop 分支创建,待发布完成后合并到 Develop 和 Master 分支去 |
Feature | 新功能分支,基于 Develop 分支创建,开发新功能,待开发完毕合并至 Develop 分支 |
Hotfix | 修复分支,基于 Master 分支创建,待修复完成后合并到 Develop 和 Master 分支去,同时在 Master 上打一个tag |
开发实践
日常开发需求建立 feature 分支
# 通过develop新建feaeure分支
git checkout -b feature/分支名 develop
# 可选,将分支推送到远端仓库
git push -u origin feature/分支名
# 查看状态
git status
# 添加提交内容
git add .
# 提交
git commit
# 拉取远端仓库 develop 分支合并到本地 develop 分支
git pull origin develop
# 切换到 develop 分支
git checkout develop
# 将 Feature 分支合并到 develop 分支
# --no-ff:不使用 fast-forward 方式合并,保留分支的 commit 历史
# --squash:使用 squash 方式合并,把多次分支 commit 历史压缩为一次
git merge --no-ff feature/分支名
# 将分支推送远端仓库
git push origin develop
# 删除 Feature分支
git branch -d feature/分支名
日常开发建立 release 分支
# 创建 Relase 分支并切换到 Release 分支上
git checkout -b release/0.1.0 develop
# 切换到 master 分支上
git checkout master
# 合并 release-0.1.0 分支
git merge --no-ff release/0.1.0
# 推送到远端仓库
git push
# 切换到 develop 分支上
git checkout develop
# 合并 release-0.1.0 分支
git merge --no-ff release/0.1.0
# 推送到远端仓库
git push
# 删除 release-0.1.0 分支
git branch -d release/0.1.0
日常开发建立 hotfix 分支
# 创建 hotfix 分支并切换到 hotfix 分支上
git checkout -b hotfix/0.1.1 master
# 切换到 master 分支
git checkout master
# 合并 hotfix-0.1.1 分支
git merge --no-ff hotfix/0.1.1
# 推送到远端仓库
git push
# 切换到 develop 分支
git checkout develop
# 合并 hotfix-0.1.1 分支
git merge --no-ff hotfix/0.1.1
# 推送到远端仓库
git push
# 删除 release-0.1.0 分支
git branch -d hotfix/0.1.1
# 为主分支打上版本标签
git tag -a v0.1.1 master
# 将标签推送到远端仓库
git push --tags
Git commit
推荐采用
<type>: <subject>
type 取值可以如下挑选
Type(中文) | Type类型(英文) | 描述 |
---|---|---|
功能 | feat | 新增 feature |
修复 | fix | 修复 bug |
文档 | docs | 仅仅修改了文档,比如 README, CHANGELOG, CONTRIBUTE等等 |
格式 | style | 仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑 |
重构 | refactor | 代码重构,没有加新功能或者修复 bug |
优化 | perf | 优化相关,比如提升性能、体验 |
测试 | test | 测试用例,包括单元测试、集成测试等 |
回滚 | chore | 改变构建流程、或者增加依赖库、工具等 |
更新 | revert | 回滚到上一个版本 |
subject是 commit 目的的简短描述,不超过50个字符。比如是修复一个 bug 或是增加一个 feature
本文参考来自Git之GitFlow工作流,Git Commit:规范流畅,代码协作更高效!等优秀文章