参考书 | Python 机器学习实战 |
---|---|
作者 | 裔隽 张怿檬 张目清 |
出版社 | 科学技术文献出版社 |
难度 | 入门 |
安排 | 计划:本章 30 分钟;作业:上网查阅Linus开发Git的背景;分析所在的开发团队所用的协作开发流程是什么?总结出Git使用和Git流程中遇到过的3个问题,发给大家讨论。 |
- 非常有意思:2005 年,由 Linux 的创始人 Linus Torvalds 开发;临危赴命,用时 2 周。
- 分布式、本地管理、分支管理、提交机制
- Github、Bitbucket 等
Git 基本概念
- 版本库 - repository:一个目录;由 git 管理变更和历史
- 提交 - commit:用户修改的文件先放入缓存区,缓存区一组修改汇入本地仓库的操作叫做一次提交
- 推送 - push:将一个仓库的代码推送到另一个仓库上(本地 ->远程)
- 分支 - branch:一组独立的提交历史
- 合并 - merge:把一个分支的内容复制到另一个分支
- 合并请求 - PR(Pull Request):把自己修改的代码发送给原分支的所有者,请求合并
Git 协作开发流程介绍
- Git 有几种常见的开发流程:Git Flow、Github Flow、……等等
- 功能驱动式开发:以需求为起点创建分支,开发完毕后将修改合并到主干,最后删除需求分支
Git Flow
- 通过为需求的功能“开发”、“预发布”和“维护”分配了独立的分支,用严格的分支模型为大型项目提供必要的结构,让发布迭代过程流畅。
- 在 Git Flow 里面,不同的分支有很明确的用途,并详细规定了什么情况下进行交互。
- 长期分支:Git Flow 有两个长期分支,
master
和develop
;master
只用作对外发布;develop
是各功能的集成分支;当新版本的所有功能都集成到develop
分支后,再最终 merge 到master
;master
上用 tag 标记每次发布。 - 功能分支:每个功能都有一个功能分支;功能分支从
develop
上拉;功能完成后合并到develop
;功能分支和master
没有交互 - 预发布分支:预发布
release
分支是临时分支;每次发布时创建;从develop
拉出,经过测试后合并到master
;在这种预发布分支的模式下,master
和develop
不直接交互;release
合并到master
时也同时合并到develop
- 热修复分支:为了修复上线版本的 bug;从 master 拉出,修复后合并到 master 和 develop
- Git Flow 整个流程的描述:
- 管理员创建中央仓库:master 分支和 develop 分支;开发人员可以 clone 仓库到本地
- 开发人员从 develop 分支拉出功能分支:每天提交可以“好”版本
- 功能开发完毕:开发人员提 PR 到 develop 分支,测试后接收 PR
- 发布:从 develop 拉 release 分支:清理发布、执行 full test、更新文档、发布准备。release 好了以后,合并到 master 和 develop。
- 发布后发现 bug 需要 hot fix:从 master 拉 hot fix 分支;修复后合并到 master 和 develop
Github Flow
- Guthub Flow 是 Git Flow 的简化版本:适用于小团队,敏捷项目
- 长期分支:只有 master,随时可以发布
- 其它分支:其它都是开发功能、测试功能的分支;都从
master
上拉取;都合并到master
上 - Github Flow 的流程描述
- 管理员创建中央仓库:
master
分支 - 开发人员 clone 到本地:创建自己的
dev
分支或者test
分支 - 开发完毕:code review,然后提 PR 到
master
分支 - 讨论是否接受 PR
- 接受的 PR 被合入
master
,原有分支可以被删除 master
择机发布,并 tag
- 管理员创建中央仓库: