V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
lijsh
V2EX  ›  git

最近刚切换 git 协作遇到的一些问题

  •  1
     
  •   lijsh · 2017-05-09 13:06:38 +08:00 · 4226 次点击
    这是一个创建于 2762 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近团队从 svn 迁到了 git,引出了一些问题,包括:

    1. 是不是应该有一个激进的分支,所有正在开发的最新的代码都在上面?如果不是,正在开发的(但可能还不需要上)的功能专门开个特性分支?
    2. 我们现在有个专门的 Test 分支专门用来测试,但怎么把代码从开发分支同步到 Test 分支?直接 merge ?还是一个个手动选择?因为会有些开发好的功能还不需要送测的。

    以前我们人少,测试的需求也不多,所以一直运转良好,现在刚切过去 git 就遇到很多磨合问题。不知道大家的工作中是怎样的使用流程?

    22 条回复    2017-05-10 13:24:27 +08:00
    noe132
        1
    noe132  
       2017-05-09 13:31:35 +08:00   ❤️ 6
    我觉得简单的话一般 master 用来发布版本

    dev 用来做开发分支,稳定后 merge 到 master

    不同 feature 开不同的分支,写完后 merge 到 dev



    test 看你们是加在 master 和 dev 之间,还是从 feature 分支创建 test 然后再 merge 到 dev

    如果情况更加复杂的话也可以分的更细
    Felldeadbird
        2
    Felldeadbird  
       2017-05-09 13:40:50 +08:00   ❤️ 1
    我司目前的做法一切基于分支操作。
    master 分支与 线上永远保持一致。
    dev 用于准备上线的分支。与 master 版本差异不大于 1-3 个版本(因为待上线需要部署时间,与 master 合并不会立刻完成)。
    dev-test 用于各种功能测试之用。 基于 dev 分支 而来。因此可以随时回滚等操作。
    dev-功能名称 每次有新功能,先基于当前 dev 创建准备开发的功能。各人员接到需求后,拉取此分支进行开发。若多人开发一个功能。那么再在此分支创建更加细化的分支。如:dev-功能名称-开发人员名称
    lijsh
        3
    lijsh  
    OP
       2017-05-09 14:05:11 +08:00
    @Felldeadbird #2 那 dev-功能名称 的分支开发完了,是合到 dev 还是 dev-test ?
    jessynt
        4
    jessynt  
       2017-05-09 14:11:30 +08:00 via Android   ❤️ 2
    Git Flow 应该就是你要找的
    Ouyangan
        5
    Ouyangan  
       2017-05-09 14:12:08 +08:00
    @lijsh #3 1 楼好评 , 解决一切..
    lijsh
        6
    lijsh  
    OP
       2017-05-09 14:16:42 +08:00
    @noe132 #1 谢谢指点,其实我们现在的做法和这个很像了,就是 test 分支有问题。有时功能开发完了送测,测试测不完其它紧急功能需要上线,又得把这功能先撤下…
    mooncakejs
        7
    mooncakejs  
       2017-05-09 14:20:50 +08:00   ❤️ 1
    master 永远是 release 最新版,dev 开发,feture 开分支,test 不需要开分支,只要打 tag 就好。
    wujunze
        8
    wujunze  
       2017-05-09 14:21:19 +08:00
    一楼的方案👍
    Felldeadbird
        9
    Felldeadbird  
       2017-05-09 14:30:51 +08:00
    先合并到 dev-test。 确认测试没问题再 将 dev-功能名称 分支与 dev 合并。 最后等上线就将 dev 再合并到 master。 具体你要自己本地模拟就知道了
    joeyFuck
        10
    joeyFuck  
       2017-05-09 14:32:10 +08:00
    学习到
    Chrisplus
        11
    Chrisplus  
       2017-05-09 15:34:08 +08:00   ❤️ 1
    linda102
        12
    linda102  
       2017-05-09 17:06:42 +08:00
    @noe132 赞赞的👍 我们开发基本也是这样的流程。 永远保持主分支是最新的,需要开发新 feature 时,新建一个分支,这个分支上开发测试完毕后,再 merge 到 master 上,最后发布的是 master,如果有多个开发分支,merge 错误时,手动解决。如果开发分支太多混乱,用完删除就好啦~
    bombless
        13
    bombless  
       2017-05-09 17:11:17 +08:00
    没必要搞一个激进分支,但是可以根据 mile stone 搞一些 release candidate。
    因为你不可能每次集成的时候都成功,所以还是需要一个分支去模拟线上的下一个版本。
    Biwood
        15
    Biwood  
       2017-05-09 17:16:34 +08:00
    一直在用 1 楼的方案,原则是:分支起点是哪个分支,最终还要合并回到那个分支。这种方式跟 git-flow 还是有区别的,比较容易理解,也不那么容易造成混乱。
    qiqico
        16
    qiqico  
       2017-05-09 17:52:13 +08:00
    公司实习生较多,业务需求也很多,大家按任务划分分支,由较有经验的开发进行分支的创建和合并等操作,其它人只管提交。
    提测时候选择提测内容,手动合并分支,再构建部署,最后上线
    paranoiagu
        17
    paranoiagu  
       2017-05-09 18:36:11 +08:00 via Android
    搭车问个问题:推荐用 gitlab 还是 gerrit ?
    shalk
        18
    shalk  
       2017-05-09 18:42:55 +08:00
    @paranoiagu 这完全是两个东西.
    shalk
        19
    shalk  
       2017-05-09 18:46:14 +08:00
    1. 如果人少,可以考虑 develop 分支+master 可能就足够.
    2. Test 分支,看你们之前是怎么处理的? 既可以开分支, 也可以不开发分支,构建的时候构建成测试版本
    kier
        20
    kier  
       2017-05-09 18:48:03 +08:00
    @paranoiagu 用 git4 年多,最近用 gerrit,完全不会用,怀疑自己都不会 git 了
    vikeria
        21
    vikeria  
       2017-05-10 10:56:36 +08:00 via iPhone
    @Felldeadbird 和我组基本一致
    zhouhui
        22
    zhouhui  
       2017-05-10 13:24:27 +08:00
    git flow 流程.可以试试.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1712 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:43 · PVG 00:43 · LAX 08:43 · JFK 11:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.