共计 2526 个字符,预计需要花费 7 分钟才能阅读完成。
Git 是目前最风行的源代码管理工具。为标准开发,放弃代码提交记录以及 git 分支构造清晰,不便后续保护,现标准 git 的相干操作。
分支命名
1、master 分支
master 为主分支,也是用于部署生产环境的分支,确保 master 分支稳定性,master 分支个别由 develop 以及 hotfix 分支合并,任何工夫都不能间接批改代码
2、develop 分支
develop 为开发分支,始终保持最新实现以及 bug 修复后的代码,个别开发的新性能时,feature 分支都是基于 develop 分支下创立的。
feature 分支
- 开发新性能时,以 develop 为根底创立 feature 分支。
- 分支命名: feature/ 结尾的为个性分支,命名规定: feature/user_module、feature/cart_module
release 分支
release 为预上线分支,公布提测阶段,会 release 分支代码为基准提测。当有一组 feature 开发实现,首先会合并到 develop 分支,进入提测时会创立 release 分支。如果测试过程中若存在 bug 须要修复,则间接由开发者在 release 分支修复并提交。当测试实现之后,合并 release 分支到 master 和 develop 分支,此时 master 为最新代码,用作上线。
hotfix 分支
分支命名: hotfix/ 结尾的为修复分支,它的命名规定与 feature 分支相似。线上呈现紧急问题时,须要及时修复,以 master 分支为基线,创立 hotfix 分支,修复实现后,须要合并到 master 分支和 develop 分支
常见工作
减少新性能
(dev)$: git checkout -b feature/xxx # 从 dev 建设个性分支
(feature/xxx)$: blabla # 开发
(feature/xxx)$: git add xxx
(feature/xxx)$: git commit -m 'commit comment'
(dev)$: git merge feature/xxx --no-ff # 把个性分支合并到 dev
修复紧急 bug
(master)$: git checkout -b hotfix/xxx # 从 master 建设 hotfix 分支
(hotfix/xxx)$: blabla # 开发
(hotfix/xxx)$: git add xxx
(hotfix/xxx)$: git commit -m 'commit comment'
(master)$: git merge hotfix/xxx --no-ff # 把 hotfix 分支合并到 master,并上线到生产环境
(dev)$: git merge hotfix/xxx --no-ff # 把 hotfix 分支合并到 dev,同步代码
测试环境代码
(release)$: git merge dev --no-ff # 把 dev 分支合并到 release,而后在测试环境拉取并测试
生产环境上线
(master)$: git merge release --no-ff # 把 release 测试好的代码合并到 master,运维人员操作
(master)$: git tag -a v0.1 -m '部署包版本名' #给版本命名,打 Tag
日志标准
在一个团队合作的我的项目中,开发人员须要常常提交一些代码去修复 bug 或者实现新的 feature。
而我的项目中的文件和实现什么性能、解决什么问题都会慢慢淡忘,最初须要浪费时间去浏览代码。然而好的日志标准 commit messages 编写有帮忙到咱们,它也反映了一个开发人员是否是良好的协作者。
编写良好的 Commit messages 能够达到 3 个重要的目标:
- 放慢 review 的流程
- 帮忙咱们编写良好的版本公布日志
- 让之后的维护者理解代码里呈现特定变动和 feature 被增加的起因
目前,社区有多种 Commit message 的写法标准。来自 Angular 标准是目前应用最广的写法,比拟正当和系统化。如下图:
Commit messages 的根本语法
以后业界利用的比拟宽泛的是 Angular Git Commit Guidelines
“https://github.com/angular/an…
具体格局为:
<type>: <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
- type: 本次 commit 的类型,诸如 bugfix docs style 等
- scope: 本次 commit 波及的范畴
- subject: 简明扼要的论述下本次 commit 的宗旨,在原文中特意强调了几点:
- 应用祈使句,是不是很相熟又生疏的一个词
- 首字母不要大写
- 结尾无需增加标点
body: 同样应用祈使句,在主体内容中咱们须要把本次 commit 具体的形容一下,比方此次变更的动机,如需换行,则应用 |
footer: 形容下与之关联的 issue 或 break change
Type 的类别阐明:
- feat: 增加新个性
- fix: 修复 bug
- docs: 仅仅批改了文档
- style: 仅仅批改了空格、格局缩进、都好等等,不扭转代码逻辑
- refactor: 代码重构,没有加新性能或者修复 bug
- perf: 减少代码进行性能测试
- test: 减少测试用例
- chore: 扭转构建流程、或者减少依赖库、工具等
Commit messages 格局要求
# 题目行:50 个字符以内,形容次要变更内容
#
# 主体内容:更具体的阐明文本,倡议 72 个字符以内。须要形容的信息包含:
#
# * 为什么这个变更是必须的? 它可能是用来修复一个 bug,减少一个 feature,晋升性能、可靠性、稳定性等等
# * 他如何解决这个问题? 具体形容解决问题的步骤
# * 是否存在副作用、危险?
#
# 如果须要的化能够增加一个链接到 issue 地址或者其它文档
起源:https://juejin.im/post/684490…