github 如何运用 git 进行多人合作开发? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
uniquecolesmith
V2EX    GitHub

github 如何运用 git 进行多人合作开发?

  •  
  •   uniquecolesmith
    whatwewant 2015-04-16 11:24:30 +08:00 7696 次点击
    这是一个创建于 3901 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题描述

    • 在多人和做的时候,两个人同时从同一个分支branch自己的分支, 他们修改完代码提交的自己的分支后,管理员何必的时候出问题了,因为他们在同一行添加了自己的代码,导致何必失败,现在怎么办?怎么合作git开发才是正确的姿势??
    31 条回复    2015-04-18 09:39:15 +08:00
    mahone3297
        1
    mahone3297  
       2015-04-16 11:45:22 +08:00   1
    有conflict,肯定要手动fix吧。。。
    支持lz chi种头像。。。
    v2gba
        2
    v2gba  
       2015-04-16 11:49:27 +08:00   1
    手动merge啊...
    xiaogui
        3
    xiaogui  
       2015-04-16 11:55:16 +08:00   2
    git 的理念是沟通。
    finab
        4
    finab  
       2015-04-16 12:04:49 +08:00   1
    冲突了肯定需要管理员自己解决冲突呀,解决冲突算个commit。。
    他们就可以pull一下继续开发
    uniquecolesmith
        5
    uniquecolesmith  
    OP
       2015-04-16 12:50:11 +08:00
    @mahone3297 好吧,只能这样了... Please Call it キムウッドリサチ, 哈哈
    uniquecolesmith
    6
    uniquecolesmith  
    OP
       2015-04-16 12:50:24 +08:00
    @MrGba2z 好吧,谢谢
    uniquecolesmith
        7
    uniquecolesmith  
    OP
       2015-04-16 12:50:59 +08:00
    @xiaogui 嗯,有理,我现在很需要沟通,他们不会=_=
    uniquecolesmith
        8
    uniquecolesmith  
    OP
       2015-04-16 12:52:18 +08:00
    @finab 嗯,人多了,感觉更麻烦, 唉
    xiaogui
        9
    xiaogui  
       2015-04-16 12:52:59 +08:00
    @uniquecolesmith 很久很久以前使用 svn 的时候,用自动合并,然后发现程序总是自作聪明的合并的乱七八糟。还是人跟人沟通才是王道。
    uniquecolesmith
        10
    uniquecolesmith  
    OP
       2015-04-16 12:56:24 +08:00
    @xiaogui 关键是有些人太固执,也来交流,沟通不来怎么办...最难的还是人与人之间啊.....学生都不把这当回事,邋遢死了
    lululau
        11
    lululau  
       2015-04-16 12:58:04 +08:00
    开发人员自己merge,遇到 conflict 互相沟通,自己解决,解决后提 PR。对于不能 auto merge 的PR,管理员打回,由开发人员处理后重新提交 PR
    xiaogui
        12
    xiaogui  
       2015-04-16 13:06:35 +08:00
    @uniquecolesmith
    1、在尽可能的情况下,减少开发人员,这样可以降低沟通成本;
    2、在划分功能、模块或者其他的时候,要分得仔细一些,减少“在同一行添加了自己的代码”的可能性。另在划分以后,要求优先完成与其他人有交叉,联系的部分,这样不至于严重影响其他人的开发进度;
    3、队伍磨合是最困难的事情,学生的话个人更难沟通一点,让大家都认可的人推动这件事情,可能效果会更好一点。
    uniquecolesmith
        13
    uniquecolesmith  
    OP
       2015-04-16 13:07:38 +08:00
    @lululau 嗯,不错,换个思路,减轻了管理员负担,但是那些开发人员都不熟悉, 而且很懒,这个,自己得解决
    hjc4869
        14
    hjc4869  
       2015-04-16 13:08:26 +08:00
    我们内部做项目用的就是git,一般协商好尽量不两个人改同一个文件。如果两个人改了同一个文件那么就需要resolve conflicts.
    uniquecolesmith
        15
    uniquecolesmith  
    OP
       2015-04-16 13:11:29 +08:00
    @xiaogui 嗯,这个过程得很长,因为它们都用windows,不喜欢命令行,不喜欢*nix,强迫他们半年都没学到最基本的命令,带这它们真累....虽然我代码方面的成就比他们好很多,但是我和它们同级,感觉这是个问题,不知任务都不做,只是当时积极报项目,三分钟做项目的热度。。真难
    xiaogui
        16
    xiaogui  
       2015-04-16 13:13:00 +08:00
    @uniquecolesmith 对于懒虫来说,就推荐他们使用 https://windows.github.com/
    9hills
        17
    9hills  
       2015-04-16 13:17:36 +08:00
    管理员去解决冲突。这是管理员的事情,和那两个人没啥关系
    timonwong
        18
    timonwong  
       2015-04-16 13:19:04 +08:00
    1. master 禁止任何人提交,除了管理员(可以是CI);
    2. 提交者创建 feature 或 bugfix 分支,提交后进入 Code Review 阶段(同时 CI 进行测试);
    3. Code Review 和测试通过,管理员进行合并;
    4. 若合并不成功(冲突),直接打回。

    使用 Stash 加一个 CI,Jenkins/Bamboo/TeamCity,这些都还是比较好实现。
    mornlight
        19
    mornlight  
       2015-04-16 13:29:39 +08:00
    不喜欢命令行就不要强制他们用命令,用Github 官方客户端或者SourceTree 都挺好的。
    drivedreams
        20
    drivedreams  
       2015-04-16 13:32:20 +08:00
    Git分支功能强大,可以在同一工作目录快速切换。所以应该充分利用该功能。
    如果人多的话,建议每个人在工作的时候,针对当前自己的工作建立一个新分支。为新建分支时注意分支名称要说明该分支正在工作内容(合作者要经常查看别人建立的分支,通过名称分析是否与他人冲突,降低冲突的可能性)。每个新建的分支解决的问题要相对简单,,每个分支建立的时间不宜太长。最好是两三天之内关闭及合并。此外新建分支在服务器有备份,在处理冲突时降低冲突带来的风险。

    建立多个分支,可通过Github提供的图表功能清晰的看见每个人做了分别做了哪些工作。便于后期维护。
    uniquecolesmith
        21
    uniquecolesmith  
    OP
       2015-04-16 14:27:41 +08:00
    @hjc4869 嗯,这样也不错
    uniquecolesmith
        22
    uniquecolesmith  
    OP
       2015-04-16 14:28:08 +08:00
    @xiaogui 谢谢
    uniquecolesmith
        23
    uniquecolesmith  
    OP
       2015-04-16 14:31:28 +08:00
    @9hills 额,好吧
    @mornlight
    @timonwong 我是这么要求的,可是打回去,它们不干=_=
    @drivedreams 看来还有好多工作要做
    9hills
        24
    9hills  
       2015-04-16 14:53:17 +08:00   1
    @uniquecolesmith 标准流程是merge第一个发出merge request的,后一个冲突了打回让他改。

    但是你威信不够。。就只能管理员自己改了。。
    ilotuo
        25
    ilotuo  
       2015-04-16 14:58:24 +08:00 via Android   1
    先merge a
    两人pull
    再merge b呀
    至于先后 让他两猜拳去吧~
    nijux
        26
    nijux  
       2015-04-16 15:02:34 +08:00   1
    ferock
        27
    ferock  
    PRO
       2015-04-16 16:12:21 +08:00   1
    每个人玩儿自己的分支

    合并提merge request ,管理员来看。
    有问题单独说,做好的,群体表扬。

    这不光是技术问题,也是管理员的管理艺术。
    colorfulberry
        28
    colorfulberry  
       2015-04-16 17:54:25 +08:00   1
    采用详细的分好task,每个人任务要分开,在就是采用pull request 模式!
    uniquecolesmith
        29
    uniquecolesmith  
    OP
       2015-04-18 09:37:42 +08:00
    @ilotuo 哈哈
    uniquecolesmith
        30
    uniquecolesmith  
    OP
       2015-04-18 09:38:05 +08:00
    @9hills 威信技能不够,哪里购买
    uniquecolesmith
        31
    uniquecolesmith  
    OP
       2015-04-18 09:39:15 +08:00
    @nijux thanks
    @colorfulberry 嗯,谢谢,我还没理解透PR, 载学习学习
    @ferock 嗯,这艺术得学好久,3Q
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3090 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 00:17 PVG 08:17 LAX 16:17 JFK 19:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86