2

我使用Git版本控制研究,我有一个使用相同的基本目录多个项目,但也有一些变化是由具体的项目。如何跟踪与同一核心文件单独项目的git

有没有一种方法,我可以跟踪与同混帐回购协议(在我的情况根/私营/芯)超折叠的以及公共和私人项目的具体目录以及。 另外,如果我做一个项目的核心文件的变化,我想这变化在其他项目中取得混帐回购协议以及。

我已经想出的办法是使在根文件夹中的git仓库,然后进行分支项目,而不是跟踪其他项目文件。但使用这种方法,我必须在其他项目中合并核心更改,并且还存在一种逻辑错误,因为在这种情况下,分支将用作项目。

我已经看过成子模块藏汉,但这似乎不是最好的解决方案以及。如果有一个解决方案需要我改变我的项目目录系统,我可以做到这一点,尽管我想单独保留公共,私​​人和核心导演。

我此刻的目录

简单的例子:

    • 私人
      • 核心
      • 项目
        • PROJECT1
        • 项目2
    • 公共
      • PROJECT1
      • 项目2

在私人项目文件夹中有核心PHP扩展是特定项目和公共项目文件夹仅样式表,JavaScript和索引。

回答

0

我已经看过成子模块藏汉,但这似乎不是最好的解决方案,以及

然而,它可能是一个有效的解决方案:

  • private父回购,包括coreproject1project2作为子模块
  • public父母回购,包括project1 a ND project2作为子模块

每次修改的子模块(如project1private),则需要:

  • 提交,将其推到上游回购(相同父回购private),
  • 进入另一方回购的相同的子模块(public/project1
  • 混帐拉

不完全是微不足道的,但可以让你保持一个确切的参考由每个父回购所使用的配置(“配置”是你所需要的子模块的SHA1的确切名单)

1

取而代之的子模块(有自己的限制 - “你不能在主项目中修改子模块的内容” - 并且将改变你平常的Git-workflow的)你可以考虑git-subtree,在这种情况下核心将被添加为子树(但仍然存在为单独回购)在所有超级项目中。 Use-case of git-subtree在一种让人想起你的状态的情况下

+0

“你不能在主项目中修改子模块的内容”?当然,你可以:http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194。这是一个组件方法,而不是一个系统方法与子树:http://stackoverflow.com/questions/769786/vendor-branches-in-git/769941#769941 – VonC

+1

@VonC - 阅读**正确的**来源在回答之前。 Git-boys让我疯狂!我没有提到'git update',我引用了[git-submodule man](http://schacon.github.com/git/git-submodule.html),这不是我的措辞**“...历史的两个项目仍然保持完全独立,您不能从主项目“**”内修改子模块的内容。用简单的英文表示:如果修改了超模块和子模块**中的文件**,那么您不能**一次全部提交*(至少我是这样读的) –