V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
WildCat
V2EX  ›  问与答

关于 Git 项目协作的基础问题

  •  
  •   WildCat · 2014-03-28 11:34:42 +08:00 via iPhone · 3387 次点击
    这是一个创建于 3684 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近打算和几个朋友协作一个 Node.js 项目,请教前辈几个问题:
    1.我们每个人都需要建一个分支吗?朋友说他们用SVN一个小项目共用一个分支
    2.Fork和分支是一个意思吗?
    3.WebStorm的Node.js项目都需要.gitignore哪些文件?

    谢谢!
    15 条回复    1970-01-01 08:00:00 +08:00
    zzNucker
        1
    zzNucker  
       2014-03-28 11:38:16 +08:00   ❤️ 1
    SVN共用分支的原因是新开分支代价太大。
    Git的话分支的代价可以忽略不计,基本就个指针。所以本地你可以随便开多少分支,要不要推送分支到主干你们可以自己商量。。

    你们一起开发的话不需要fork了,直接在同一个repo上搞就行了

    .gitignore看自己需要啊,比如数据库配置文件。
    learnshare
        2
    learnshare  
       2014-03-28 11:41:35 +08:00   ❤️ 1
    zzNucker
        3
    zzNucker  
       2014-03-28 11:45:08 +08:00   ❤️ 1
    修改一下:“要不要推送分支到远程你们可以自己商量”
    比如要不要新建个develop分支一起开发之类的。
    hoogle
        4
    hoogle  
       2014-03-28 12:13:59 +08:00 via iPhone   ❤️ 1
    团队每个人建一个自己的分支, 个人又为自己开发的模块建立分支, 开发完成合到自己分支,再将所有人各自已完成的分支合并到master
    WildCat
        5
    WildCat  
    OP
       2014-03-28 12:52:49 +08:00
    Sunyanzi
        6
    Sunyanzi  
       2014-03-28 17:29:51 +08:00   ❤️ 1
    我带团队用 git 的时候基本不主张 fork ...

    大家都操作同一个 repo ... 我维护几个核心的 branch ... 可以随意增加其他 branch ...

    大家各自维护自己的 branch ... 在 review 之后再推到某个核心 branch 上 ...

    fork 和分支也许是一个意思也许不是 ... 我到现在也不清楚 git 的相关用语该如何翻译 ...

    所以一般在谈论 git 的时候我会避免使用「分支」这个词 ...

    fork 的意思是建立一个新的 repo ... branch 我理解更像在当前 repo 中创建独立的空间 ...

    至于 gitignore 哪些文件 ... 在使用中你自然就知道了 ...

    一般而言所有会被增加到项目中却不属于这个项目的文件都应该被 ignore 掉 ...
    cai314494687
        7
    cai314494687  
       2014-03-28 17:54:58 +08:00   ❤️ 1
    可以为项目添加合作人的,然后他有权限push
    或者你创建一个组织,然后把他们添加到组织的项目里面
    WildCat
        8
    WildCat  
    OP
       2014-03-28 18:25:16 +08:00 via iPhone
    @cai314494687 git@osc好像没找到组织
    yuelang85
        9
    yuelang85  
       2014-03-28 18:40:40 +08:00   ❤️ 1
    如果你们每人负责一个模块,几乎没有交集,使用同一个分支就可以。

    当然,这个还要看你们开发是否统一,比如一个模块需要开发2星期,而你们其他人1星期,又希望每星期出集成,那么两星期那个就需要开分支了。

    不过一般都会细化功能,把所有人的节奏都统一到一星期里
    cai314494687
        10
    cai314494687  
       2014-03-28 20:47:55 +08:00
    @WildCat 对 git@osc 不熟悉,不知道是否有这个功能,但是 GitHub 是有的。
    finian
        11
    finian  
       2014-03-28 22:41:07 +08:00   ❤️ 1
    WildCat
        12
    WildCat  
    OP
       2014-03-28 22:42:48 +08:00
    @finian
    @cai314494687

    谢谢!
    a591826944
        13
    a591826944  
       2014-03-29 00:00:31 +08:00
    看看 git flow
    goofansu
        14
    goofansu  
       2014-03-29 00:09:58 +08:00   ❤️ 1
    我参与了一个项目是这样协作的(github):

    1. fork主库,添加主库为upstream
    2. 开发功能前到主库提一个issue,因为可能有人已经在开发相同的功能了
    3. 开发时,在自己的fork中创建一个branch
    4. 在这个branch中进行功能开发,做完以后进行如下步骤,就可以把主库的master合并入你的branch
    a. git checkout master
    b. git pull upstream master
    c. git rebase -i master
    d. 解决冲突
    5. 提交branch到github
    6. 使用pull request告诉别人你的功能完成了
    7. 如果这个功能还要继续修改,就继续循环第4步,github上的pull request会自动反映这个branch的最新更改,这样大家就能持续review你的代码
    8. 确认ok了就由一个人合并你的功能进入主库的master

    我觉得这个步骤还是蛮清晰的,仅供参考。
    msg7086
        15
    msg7086  
       2014-03-29 05:37:58 +08:00   ❤️ 2
    @goofansu 说的是fork+PR的模型,对于分布式开源项目开发是挺好的。

    @a591826944 说的git flow+PR模型,对于一个团队的比较方便。
    start feature开分支写代码,然后push+PR做review,最后merge回develop。
    图示: http://jacovanstaden.files.wordpress.com/2011/03/git-flow-feature-branch.jpg
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5434 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 08:59 · PVG 16:59 · LAX 01:59 · JFK 04:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.