Git子树合并策略或子树命令?

时间:2011-07-05 21:19:06

标签: git branching-and-merging git-merge git-subtree

我正在开始一个新的Zend Framework项目,我将与设计师合作。我将使用git来维护这个项目代码,通常设计师不会说git(或任何编程语言)所以我想让他的事情变得简单,否则我恐怕他根本就不会使用git。我的计划是给他一些Git gui,并且他应该只使用基本的git功能,例如commit,diff,fetch,merge,push和pull。

我正在使用gitolite来维护我们的git存储库的共享副本,因为它有一个精细的权限系统,我将只为设计者提供RW访问权限(设计)和对其他分支的读访问权。

为了简单起见,我想与他分享主项目中的一些文件夹(在ZF recommended structure之后),他确实需要访问它才能完成工作。与此同时,我希望我们两个人仍然可以相互合并。

他的分支的结构减少应该是这样的:

<project name>/
    application/
        layouts/
            scripts/
        views/
            scripts/
    public/
        css/
        images/
        js/

我知道我可以使用子模块执行此任务,但维护是一件痛苦的事情,因为我应该将项目拆分到(至少)4子库中,他应该只能访问子库并且他有3个存储库跟...共事。因此,如果这是唯一的解决方案,我会放弃这个想法。

我已经读过的一些链接让我觉得我所要求的是可能的:

以下是我的问题:

  1. 如何创建简化分支designgit checkout -b designgit mv/rm?)
  2. 如何配置git以跟踪跨分支的编辑(所以我可以从主分支git merge design反之亦然)
  3. 更新

    我找到了另外两种可能解决这两个问题的方法

    我尝试在设计分支中实现第一个git rm all-unneeded-stuff后,在主分支中进行提交,其中涉及白名单路径中的文件和黑名单路径中的另一个文件,但是git merge失败并显示以下消息

    CONFLICT (delete/modify): application/Bootstrap.php deleted in HEAD and modified in master. Version master of application/Bootstrap.php left in tree.
    

    然后我在master分支中添加了一个新目录,当从设计中合并时,添加了新目录。我在驱动程序中添加了一些调试回声,我发现它在两种情况下都没有被调用,可能是因为它不是真正的合并。

    我还没有尝试过第二种方法(.gitignore),但是如果我理解这种方法不符合我的需求,因为它只会忽略设计分支中列入黑名单的文件,但会检查它们在设计部门,打破我的要求。

    我在GitHub

    上推动了我的实验

    更新2:

    我认为目前没有解决方案。使用当前的git实现,这根本无法实现。

    我想要反对,但我担心它不会发生。

1 个答案:

答案 0 :(得分:6)