英语名词

英语解释例子
panacea万能药
every once in a while每隔一段时间
branch off … from …vt. 分支,分叉
off 副词

适用性

  • 软件需要支持多个版本
  • 软件需要版本化
  • 对于 CD(continous delivery) 软件

各个版本的个人理解

主要分支

  • Master
  • Develop

features 分支

  • 比 develop 更多 commit
  • 有多个

master 分支

  • 功能完整的分支
  • bug 基本都修复的分支
  • 完成了的 realse 分支版本

release 分支

  • 创建和完善 release 分支的线路
  • feature

    • 只有一个版本起始阶段继承进来了 features
    • 后续没有新 feature
    • 只有修复 bugs
  • 可以有多个

    • ? 是不是每个 release 专门设计一个分支
  • 禁止行为

    • 不允许在 release 分支添加大的新功能(large new features)

创建

  • 必须要在所有的相关 features 分支被合并到 develop 后

    • 这些 features 分支是下个版本需要的
    • 哪些下下个版本需要的 features

      • 不需要被合并到 develop

hotfixes 分支

  • 用于严重 bug 的修复
  • 完成后

    • 被合并到 develop 和 master 分支
  • 可以有多个
  • 来源

    • 继承自 master 分支
  • VS. releases 分支

    • 最终都要合并的 master

      • 用于发布

        • hotfixes 是小版本
        • releases 是大版本
    • 都要合并到 develop
    • 来源不同

      • hotfixes 继承 master
      • releases 继承 develop
  • 作用

    • 可以与 develop 分支并行向前
    • 不耽误 develop 的开发
  • 名称

    • hotfix-1.2.1

      • 这里 "..1" 代表修复 bug 的版本

develop 分支

  • 存放新开发,且通过测试的代码

    • 但是,还没有达到下一个发布窗口
  • 别名

    • integration branch
  • 所有分支的干线和中枢
  • 基本不在 develop 分支上 直接修改代码

    • 合并 hotfixes 分支(上个版本的 server bugs)
    • 合适的时刻合并 features(完成了的), 开始开发下个版本

      • 合并 releases 分支上修复的 bugs
  • 被继承

    • 被 features 分支继承

      • 用于开发新功能
    • 在合并 features 分支后,被 releases 分支继承

      • 用于制作新的 release 版本
  • 注意

    • 继承创建分支后

      • 不会再被合并到之前分出去的分支上了
      • 只会在相关分支–完成设定目标后,再合并回来

        • 如:

          • feature 分支,要做新功能完成
          • release 分支,bug 修复,可以发布之后

生命期

  • 长久

    • master
    • develop
  • 暂时 a limited life time

    • features
    • releases
    • hotfixes
    • 这些分支都是为了完成某个任务

      • 最终都是要被删除的

命名传统

  • master

    • 不变
  • develop

    • 不变
  • release

    • release-*
    • release-1.2
  • hotfix

    • hotfix-*
    • eg:

      • hotfix-1.2.1
  • feature

    • 除掉上述名称以外都可以
    • 与 issue 相关

      • feature@<issue id>
    • 使用关键字

      • feature-<keyword>

标签

  • 0.x

    • 这里 .x 只用于大型 bug (severe bugs) 修复
  • x.0

    • 这里 x. 用于添加 features

分支管理命令

  • release 分支

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    # * 创建
    $ git checkout develop
    Switched to branch 'develop'
    
    # * 合并
    $ git merge --no-ff release-1.2
    Merge made by recursive.
    (Summary of changes)
    
    # * 删除无用分支
    $ git branch -d release-1.2
    Deleted branch release-1.2 (was ff452fe).
    • 注意

      • 合并

        • 需要使用 –no-ff 选项

          • 这样能保存 release 分支 曾经存在的痕迹
      • log message

        • 不用手动记录 合并分支的信息
        • git 会自动生成合并的信息

          1
          2
          3
          4
          5
          6
          7
          8
          
            ,*   0dadd90 (HEAD -> develop) Merge branch 'feature-similar-formula' into develop
            |\
            | * 650a436 Delete some old codes and Add comments for flaskserver_aiohttp.py
            | * a404257 add time for logging and replace old codes with argparse module.
            | * 6d5e295 AreaSplit codes for similar formula
            ,* | 8a3bfa5 (master) change in databases
            |/
            ,* 60e7fb1  Reconstructed the tpp module to a package.
          • 如上所示,在合并的 commit 上有 说明被合并的分支