• Git - branch name


    在一个大公司工作,项目可以从一个人的团队突然扩展到20个开发人员的团队,拥有一个可管理的代码库是一种需要。大多数概念验证项目都是从一个仓库开始的,所有的修改都直接应用到主分支。当新的开发者的小规模项目突然被注意到时,将其提升到一个适当的大规模仓库是一个常见的途径。

    在我这边,由于要处理几十个类似的不同项目,我想出了这个分支命名惯例。

    可以把这些分支分成两类:

    代码流分支 / Code Flow Branches

    这些分支是我们期望在版本库中永久可用的,它们遵循代码变化的流程,从开发开始一直到生产。

    - 开发 (dev - Development )

    所有的新功能和错误修正都应该被带到开发分支。解决开发人员的代码冲突应该尽早在这里完成。

    - QA/Test(test)

    包含所有准备用于QA测试的代码。

    - Staging ( Optional, 可选的,可以不用这个分支)

    它包含经过测试的功能,利益相关者希望这些功能在提升到生产之前可以用来做演示或建议。在这里决定一个功能是否应该最终被带到生产代码中去。

    - 主干(master)

    生产分支,如果版本库被发布,这就是被展示的默认分支。

    除了Hotfixes,我们希望我们的代码遵循单向合并( one-way merge)的原则,开发>测试>暂存>生产(development > test > staging > production)。

    (dev-test-stage-prod)

    临时分支 / Temporary Branches

    顾名思义,这些是一次性的分支,可以根据开发者或部署者的需要创建和删除。

    - 功能分支 / Feature

    任何对新模块或用例的代码修改都应该在特性分支上完成。这个分支是在当前开发分支的基础上创建的。当所有修改都完成后,需要一个 Pull Request/Merge Request 来将所有这些修改放到开发分支上。

    例子:

    feature/integrate-swagger

    feature/JIRA-1234

    feature/JIRA-1234_support-dark-theme

    建议使用所有小写字母和连字符(-)来分隔单词,除非是特定的项目名称或ID。可以用下划线(_)来分隔ID和描述。

    - 错误修复 / bug fix

    这个分支也是在当前开发分支的基础上创建的。当版本发布、sprint或demo演示结束后,之后任何必要的修复工作都应该在错误修复分支上完成。

    例如:

    bugfix/more-gray-shades

    bugfix/JIRA-1444_gray-on-blur-fix

    - 热修复 / Hot Fix

    当需要立即处理某个问题时,比如需要修复一个必修问题blocker,做一个临时补丁,更改一个关键的框架更新或配置变化,那它应该被创建为一个Hotfix。它不遵循代码的预定整合,可以直接合并到生产分支,然后再合并到开发分支上。

    例子:

    hotfix/disable-endpoint-zero-day-exploit

    hotfix/increase-scaling-threshold

    - 实验性 / Experimental

    任何不属于版本release或sprint的新功能或想法。一个用于玩耍的分支。

    例如:

    experimental/dark-theme-support

    - 构建 / Build

    一个专门用于创建特定构建组件或进行代码覆盖率运行的分支。

    例子:

    build/jacoco-metric

    - 发布 / Release

    用于标记特定发布版本的分支,虽然这个分支一般创建后就不会再修改,是一次性的,但一般为了以后项目可追溯,留着不删除比较好。

    例如:

    release/myapp-1.01.123

    Git 也支持对仓库的特定提交历史进行标记。如果需要让代码可供签出(checkout)或使用,就可以使用发布分支。

    - 合并 / Merging

    一个用于解决合并冲突的临时分支,通常是在最新的开发版本和功能或 Hotfix 分支之间。如果一个功能的两个分支由多个开发者共同完成,需要合并、验证和最终确定,也可以使用这个分支。

    例子:

    merge/dev_lombok-refactoring

    merge/combined-device-support

    总结

    注意分支的名字的分割,使用斜线,这样在Git的ref信息等目录结构里,会按照斜线的分隔形成一个路径,比如dev/myproj,那dev是一个文件夹,在里面有一个myproj的文件夹。

    首先确认是单个项目还是项目集合,如果是单个项目的话,分支命令为:

    常用的代码流管理分支:

    dev

    test

    prod

    master

    临时的分支:

    feature/desc

    bugfix/desc

    hotfix/desc

    release/desc

    merge/desc

    tmp/desc

    如果是多个项目使用一个代码仓库,那么master分支是多个项目共用,各个项目开发完会合并回master分支。

    常用的代码流管理分支:

    proj_name/dev

    proj_name/test

    proj_name/prod

    master

    临时分支:

    proj_name/feature/desc

    proj_name/bugfix/desc

    proj_name/hotfix/desc

    proj_name/release/desc

    proj_name/merge/desc

    proj_name/tmp/desc

    这里的desc也可以多一级分类,第一级表示引用信息,比如issue number或jira number等依赖信息,然后才是具体描述。

    比如:

    feature/issue-43/create-new-button-component

    参考:

    A Simplified Convention for Naming Branches and Commits in Git - DEV Community 👩‍💻👨‍💻

    Git Branch Naming Convention - DEV Community 👩‍💻👨‍💻

  • 相关阅读:
    Linux环境下安装docker环境(亲测无坑)
    Android 10.0 禁止弹出系统simlock的锁卡弹窗功能实现
    Arthas--的使用
    【精句】k8s资源管理概述
    [项目管理-27]:任务的目的,背后的原因是任务实施首要思考的问题。
    2-3 Moves Codeforces 1716A
    第一套模拟.py
    手写数组方法之不改变原数组方法
    假设检验3
    代码随想录算法训练营day55 | 392.判断子序列,115.不同的子序列
  • 原文地址:https://blog.csdn.net/guoqx/article/details/126655026