一个存储库中的多个项目 GitHub

Multiple projects in one repository GitHub

我有 5 个 java 项目一起工作。起初我一个人在做这些项目。现在有人加入我,我们实际上需要使用 GitHub 来高效工作。

项目 A 可以说是不依赖于任何其他项目的主项目。 项目 B 依赖于项目 A。 项目 C 依赖于 B 和 A。 项目 D 等

我遇到了设计问题:

我应该使用一个 git 存储库并将它们放在一起但放在不同的文件夹中吗? 我应该使用不同的 git 回购并保持它们独立(可能更适合提交)吗? 我应该使用不同的 git 存储库并将它们全部重新组合到一个主 git 存储库中吗?

在此先感谢您的帮助。

thread 可以为您提供有关如何组织项目的正确答案,但请记住,这只是一个基于意见的答案,因为没有最好的方法。

您应该将它们每个都放在自己的 git 存储库中。

然后您可以使用 git 子模块将依赖项目添加到另一个项目。

示例: 项目 A 将包含项目 B 作为子模块。

Read more about git submodules
Official documentation

事实上,您的问题可以概括为:我应该使用单回购方法还是多回购方法?
这是一个宽泛的主题,但为了简单起见:它取决于这些项目之间的耦合程度和生命周期。

如果这些项目旨在共同生存和发展,那么您想要使用单一存储库方法并添加多个项目。例如,如果只有这些项目之间存在依赖关系,并且当您更改依赖关系时,您将更改使用者,那么将它们拆分到多个存储库中显然没有任何价值。
这将使全局源代码的可读性变弱,并且 commit/pull/request/merge 在同一用例的多个存储库上,这会使它们的可读性和一致性变弱。

如果这些项目不是为了共同生存和发展而设计的,那么您想使用多回购方法并通过回购来拥有一个项目。例如,如果其中一些项目被您引用的其他应用程序使用,那么在消费者项目的存储库中耦合项目依赖性是没有价值的,因为还有其他消费者,那么为什么是那个消费者而不是另一个消费者呢?

你也有 the super mono repo approach,例如 Google 或 Facebook 使用的那个,它在同一个存储库中添加 所有 个项目(或几乎),无论项目之间的耦合程度。 做这样的事情并不简单,需要精细地定制 CDCI 和 SCM 工具,以保持实用和简单,尽管 repo 大小。

抱歉,它不是针对它的具体解决方案,但它可以完成工作,我尝试的是,由于某种原因,我不得不将所有项目添加到一个存储库中,所以我按照以下步骤操作:

  1. 使用主分支创建一个新的存储库(保持为空)
  2. 使用相应的项目名称从 Main(空)创建一个分支(使用您拥有的相应项目创建任意数量的分支)
  3. 然后使用以下命令结帐到该分支:

$git checkout -b <branch_name>

  1. 如果原点已经存在,则先将其删除,然后使用以下命令添加新创建的远程原点:

$ git remote rm origin (To remove remote origin)

$ git remote add origin https://github.com//<REPO_NAME>.git

  1. 要获得操作授权,您需要使用以下命令:

$ git remote set-url origin <Access_Token>@github.com//<REPO_NAME>.git

  1. 现在,您可以通过以下命令直接将代码和文件推送到分支:

$ git push -u -f origin <branch_name>

  1. 如果上述命令抛出错误,请先尝试通过以下命令添加文件,然后再次尝试第 6 步。

$ git add .

这对我有用,因为每当我想 change/pull 任何项目中的某些东西时,我只需克隆一个特定的分支并在其中进行更改,然后仅将更改推送到该特定的分支。这样你就可以在一个 repo 下拥有多个项目。我自己尝试了这个解决方案只是为了绕过孤儿分支或拥有多个 Repos 的棘手方式。