[培训-Python机器学习]04-Git的使用和规范

参考书 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 有两个长期分支,masterdevelopmaster 只用作对外发布;develop 是各功能的集成分支;当新版本的所有功能都集成到 develop 分支后,再最终 merge 到 mastermaster 上用 tag 标记每次发布。
  • 功能分支:每个功能都有一个功能分支;功能分支从 develop 上拉;功能完成后合并到 develop;功能分支和 master 没有交互
  • 预发布分支:预发布 release 分支是临时分支;每次发布时创建;从 develop 拉出,经过测试后合并到 master;在这种预发布分支的模式下,masterdevelop 不直接交互;release 合并到 master 时也同时合并到 develop
  • 热修复分支:为了修复上线版本的 bug;从 master 拉出,修复后合并到 master 和 develop
  • Git Flow 整个流程的描述:
    1. 管理员创建中央仓库:master 分支和 develop 分支;开发人员可以 clone 仓库到本地
    2. 开发人员从 develop 分支拉出功能分支:每天提交可以“好”版本
    3. 功能开发完毕:开发人员提 PR 到 develop 分支,测试后接收 PR
    4. 发布:从 develop 拉 release 分支:清理发布、执行 full test、更新文档、发布准备。release 好了以后,合并到 master 和 develop。
    5. 发布后发现 bug 需要 hot fix:从 master 拉 hot fix 分支;修复后合并到 master 和 develop

Github Flow

  • Guthub Flow 是 Git Flow 的简化版本:适用于小团队,敏捷项目
  • 长期分支:只有 master,随时可以发布
  • 其它分支:其它都是开发功能、测试功能的分支;都从 master 上拉取;都合并到 master
  • Github Flow 的流程描述
    1. 管理员创建中央仓库:master 分支
    2. 开发人员 clone 到本地:创建自己的 dev 分支或者 test 分支
    3. 开发完毕:code review,然后提 PR 到 master 分支
    4. 讨论是否接受 PR
    5. 接受的 PR 被合入 master,原有分支可以被删除
    6. master 择机发布,并 tag

你可能感兴趣的:(软件开发,git)