1

这肯定必须是重复的,因为它是一个常见的场景,如果是这样,请引导我找到一个好的链接。

我有一个通用项目(类库),它将在许多解决方案中使用,比如说,一个通用解决方案,我将其称为dll在解决方案AB. 所以现在的目录结构是这样的:

Solution Common (dll)
      - Project Common

Solution A
      - Project A1

      - Project A2

      - Project Common #only referenced, so logical presence, not in real

Solution B
      - Project B1

      - Project B2

      - Project Common #only referenced, so logical presence, not in real

现在我需要的是

  1. 一个 git 存储库,dll以便我可以提交对dll文件所做的更改。

  2. 一个 git 存储库,A以便我可以提交对文件A以及dll文件所做的更改。(由于在 Visual Studio 中我将两个项目都放在一个解决方案下,因此编辑它们很容易,但我应该能够将它们一起提交)。如果我可以dlldll存储库中提取任何特定的提交,也将受到欢迎,但这不是绝对必要的。

  3. 与上述相同B

基本上我需要 3 个存储库,以便我可以在 3 个不同的解决方案文件夹中单独提交,但我还需要能够在dll存储库之间共享存储库,A并且B我可以从中提交和提取等。

我的问题是:

  1. 是否可以?

  2. 如果是这样,我将如何构建我的存储库?

  3. 我将如何提交/拉动dllA在一起?

我已经想到的一种解决方案是为其范围之外的所有 3 个解决方案拥有一个巨大的存储库,但这似乎很不优雅,因为我还有其他解决方案文件夹A以及B.

4

1 回答 1

1

我确认这是git 子模块(由madhead提到)的用途,但您需要意识到子模块首先是对另一个 repo 的固定引用。 您可以直接在子模块中进行修改,但您需要:

  • 在该子模块中提交,并推送到其上游仓库
  • cd 回到父仓库
  • 在该父仓库中提交(记录子模块的新引用)并推送到父上游仓库

(在“子模块的真实性质”中查看更多内容)

这非常适合基于组件的方法,其中每个模块都可以独立发展,并且将所述模块的特定修订组合在一起以形成完整的程序。
(您的“巨型回购”将是一种基于系统的方法,其中所有模块都是可写的,并且在其最新版本中)

于 2013-02-22T21:24:05.290 回答