2

我使用 git 版本控制,并且我有多个使用相同基目录的项目,尽管某些更改是针对特定项目的。

有没有一种方法可以使用相同的 git repo 跟踪超级文件夹(在我的情况下为 root/private/core)以及公共和私有项目特定目录。另外,如果我在一个项目中对核心文件进行更改,我希望在其他项目 git repo 中也进行更改。

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

我也研究过子模块,但这似乎也不是最好的解决方案。如果有一个解决方案需要我更改我的项目目录系统,我可以做到,尽管我想分别保留公共、私有和核心目录。

目前我的目录的简化示例:

    • 私人的
      • 项目
        • 项目1
        • 项目2
    • 上市
      • 项目1
      • 项目2

在私有项目文件夹中有特定于项目的核心 php 扩展,而在公共项目文件夹中只有样式表、javascript 和索引。

4

2 回答 2

1

而不是子模块(有自己的限制 - “你不能从主项目中修改子模块的内容” - 并且会改变你通常的 Git 工作流程)你可以考虑git-subtree,在这种情况下核心将被添加为所有超级项目中的子树(但仍作为单独的仓库存在)。git-subtree在让人想起您的状态的情况下的用例

于 2012-12-13T18:28:16.047 回答
0

我也研究过子模块,但这似乎也不是最好的解决方案

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

  • private一个父 repo,包括coreproject1作为project2子模块
  • public父仓库,包括project1project2作为子模块

每次修改子模块(如project1in private)时,您需要:

  • 提交,将其推送到上游仓库(与父仓库相同private),
  • 进入另一个父 repo ( public/ project1)的同一个子模块
  • git 拉

不完全是微不足道的,但这允许您准确引用每个父 repo 使用的配置(“配置”是您需要的子模块的 SHA1 的确切列表)

于 2012-12-13T06:52:07.723 回答