V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NicolayShi
V2EX  ›  程序员

请教大家 master 分支和 release 分支有什么区别,

  •  
  •   NicolayShi · 2019-04-11 19:45:03 +08:00 · 18190 次点击
    这是一个创建于 2055 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果每个开发人员一个以自己名字命名的开发分支,还有一个 dev 测试分支,有必要同时保留 master 和 release 吗,
    24 条回复    2019-04-12 14:03:10 +08:00
    boris1993
        1
    boris1993  
       2019-04-11 19:48:39 +08:00 via Android
    release 用 tag 管就够了吧
    2kCS5c0b0ITXE5k2
        2
    2kCS5c0b0ITXE5k2  
       2019-04-11 19:50:44 +08:00
    release 类似公测 dev 是内测 master 是稳定 (个人理解
    janus77
        3
    janus77  
       2019-04-11 20:14:10 +08:00
    在你说的这种情况下,我觉得 master 才是测试用的分支——使用 master 的代码和 release 的配置、环境这些东西,模拟真正的 release 测试。
    如果测试不通过还可以改,测试通过以后再新开分支 or 打 tag 作为 release 使用。
    Mutoo
        4
    Mutoo  
       2019-04-11 20:22:47 +08:00   ❤️ 3
    master 是最新稳定版本,release 是对外发布的版本快照,
    新开发的 feature 会 merge 到 master 上
    而 patch 则 merge 到 release 上
    NicolayShi
        5
    NicolayShi  
    OP
       2019-04-11 21:56:03 +08:00
    @Mutoo 求解释您这段话的意思,我小白有点不大理解,(掩面哭泣),新功能合并到 master,补丁合并到 release,但是不应最终都合并到和线上保持一致的 master 分支吗,版本快照又怎么理解呢,
    xy90321
        6
    xy90321  
       2019-04-11 22:00:00 +08:00 via iPhone
    @NicolayShi 在他的描述里和线上一致的是 release 分支。m 打到 release 分支的 hotpatch 最终也会在某一个时间点合并回 master 这是没错的。
    NicolayShi
        7
    NicolayShi  
    OP
       2019-04-11 22:00:53 +08:00
    @Mutoo 我看公司的代码提交记录是修改都合并到了 release,但是奇怪没有合并到 master 的记录 但是 master 的 log 记录却和 release 的 log 一致,不好意思问老大,所以在这边问了,(掩面哭泣)
    NicolayShi
        8
    NicolayShi  
    OP
       2019-04-11 22:04:45 +08:00
    @xy90321 我们好像和您说的一样,但是我不确定,因为我查到 开发人员的分支的修改都会合并到 release,但是 没有 合并到 master 的记录,master 又和 release 的 log 相同,这和您说的 hotpatch 有关吗,不是太理解这个 hotpatch,
    shawndev
        9
    shawndev  
       2019-04-11 22:05:58 +08:00
    latest 和 stable 的差别吧。
    gz911122
        10
    gz911122  
       2019-04-11 23:52:58 +08:00
    release
    是支持一个新的用于生产环境的发布版本,
    允许修正小问题,并为发布版本准备元数据。
    https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/git-flow
    可以看下这个
    xy90321
        11
    xy90321  
       2019-04-12 00:07:09 +08:00
    @NicolayShi
    hotpatch 是手残打错了,本来想指 hotfix 然后又想说 patch。。。
    master 和 release 的 log 相同那应该是你们公司没根据最标准流程来
    SharkIng
        12
    SharkIng  
       2019-04-12 00:19:09 +08:00
    msg7086
        13
    msg7086  
       2019-04-12 00:45:29 +08:00   ❤️ 2
    master 和 release 分支怎么用应该是贵司自己决定的呀。
    比如我司是做产品的,所以旧版代码也要打补丁维护,所以我们有 release-4.1 这样的分支来 backport 补丁。
    比如我维护的开源软件,旧版代码一般维护一个版本,所以我有 stable 分支和 oldstable 分支,再老的不维护的版本就打个 tag 解决。
    比如我自己写网站的时候,因为只有一台生产和一台 staging,所以 master 推 staging,然后 production 推生产。
    不同的环境下做法不一样的。
    CFM880
        14
    CFM880  
       2019-04-12 07:43:16 +08:00
    release 测试开始回归时开的分支,master 线上分支,每个 merge 点都是可编译的分支,且是比较稳定的
    release 分支 commit 会比较少,提交比较多,证明测试在前期测试可能不太好。

    具体的可以结合 sourcetree 的工作流来看
    CFM880
        15
    CFM880  
       2019-04-12 07:49:14 +08:00
    这种 git 工作流,坚决不手敲命令,sourcetree 的 git 工作流很好解决了这问题。如果工作流操作规范没有必要保留 release featue hotfix,操作不规范,就有保留分支必要
    bunnyblueair
        16
    bunnyblueair  
       2019-04-12 08:36:53 +08:00 via Android
    Android aosp 的 master 分支经常编译不过,稳定个🐔
    corningsun
        17
    corningsun  
       2019-04-12 08:40:05 +08:00 via iPhone
    可以参考 gitflow,另外推荐个 ui 客户端,GitKraken,可以清晰地看到各个分支的合并记录
    Biwood
        18
    Biwood  
       2019-04-12 08:42:38 +08:00 via Android
    “如果每个开发人员一个以自己名字命名的开发分”,是不是现在很多开发者觉得用 git 特别高大上,但是压根就不知道为什么要用 git。
    Godaigo
        19
    Godaigo  
       2019-04-12 08:47:35 +08:00 via Android
    @NicolayShi release 是程序发布的 branch 定时从 master 分出来 之后做发布前的最后测试 masrer 就是码农们日常工作时 merge 进去的主分支 当然也是经过一系列自动化测试 基本算是稳定 出了问题也可以 revert.
    ThomasZ
        20
    ThomasZ  
       2019-04-12 08:51:13 +08:00
    release 是发布的稳定版, master 主版本不一定是稳定版或者发布版, master 的版本号始终是最大的, 也是平时开发的那个版本
    Jasonwxy
        21
    Jasonwxy  
       2019-04-12 08:53:28 +08:00
    https://github.com/xirong/my-git/blob/master/git-workflow-tutorial.md 之前了解 git-flow 看的一篇文章,可以看看,还是比较容易懂的
    hantsy
        22
    hantsy  
       2019-04-12 08:58:11 +08:00
    一般开源软件,比如 Spring,都是按 GitFlow 类似的流程来管理代码,相对 Github Flow 比较复杂,但能对付复杂的版本发布计划。

    GitFlow 最初介绍:
    https://nvie.com/posts/a-successful-git-branching-model/


    一般小项目,使用 Github Flow 就行了,每个任务开分支,创建 PR,Code review, 并结合 CI 运行测试,没什么大问题,合并到 Master 直接通过 CI 发布。

    Github Flow Master 一般代表可以部署的稳定版本,通常会禁用开发人员直接到 Master 提交代码,必须通过分支(在测试运行通过,代码质量达到要求的情况)合并。另外过去的实践中,在一个分布式团队中,都是先 Fork 项目,再在自己的账号下创建分支。

    Understanding the GitHub flow: https://guides.github.com/introduction/flow/
    hantsy
        23
    hantsy  
       2019-04-12 09:05:40 +08:00
    @NicolayShi “如果每个开发人员一个以自己名字命名的开发分支”,你说的这个方法使用 Git,完全不知道你想干嘛。

    GitFlow 分支一般是分类 /issue 描述。 hotfixs/fixes-missing-link-in-readme, 有工具可以协助你命名。

    Github Flow 中过去我们使用就是简单的 issueid-issue 描述,或者就是简单的 issue 描述 。
    NicolayShi
        24
    NicolayShi  
    OP
       2019-04-12 14:03:10 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1645 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:51 · PVG 00:51 · LAX 08:51 · JFK 11:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.