猿问

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

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

  • 可以说项目 A 是主项目,它不依赖于任何其他项目。

  • 项目 B 依赖于项目 A。

  • 项目 C 依赖于 B 和 A。

  • 项目D等

我面临一个设计问题:

  • 我应该使用一个 git 存储库并将它们全部放在一起但放在不同的文件夹中吗?

  • 我应该使用不同的 git 存储库并保持它们独立(可能更适合提交)?

  • 我应该使用不同的 git 存储库并将它们重新组合到一个主 git 存储库中吗?


翻过高山走不出你
浏览 197回答 3
3回答

慕的地10843

您应该将它们每个都放在自己的 git 存储库中。然后,您可以使用 git 子模块将依赖的项目添加到另一个项目。示例:项目 A 将包含项目 B 作为子模块。

慕容3067478

事实上,您的问题可以概括为:我应该使用单一回购方法还是多回购方法?这是一个广泛的主题,但为了简单起见:这取决于这些项目之间的耦合程度和生命周期。如果这些项目旨在共同生存和发展,您希望使用单一存储库方法并添加多个项目。例如,如果只有这些项目之间具有依赖关系,并且当您更改依赖关系时,您将更改使用者,那么您显然没有价值将它们拆分到多个存储库中。它将使全局源代码可读性变弱,并针对同一用例在多个存储库上提交/拉取/请求/合并,这使得它们的可读性和一致性变弱。如果这些项目不是为了共同生存和发展而设计的,那么您希望使用多存储库方法并按存储库包含一个项目。例如,如果其中一些项目被除您引用的应用程序之外的其他应用程序使用,那么您就没有价值在消费者项目的存储库中耦合项目依赖项,因为还有其他消费者,那么为什么是那个消费者而不是另一个呢?您还可以使用超级单一存储库方法,例如 Google 或 Facebook 使用的方法,将所有项目(或几乎)添加到同一个存储库中,无论项目之间的耦合程度如何。做这样的事情并不简单,需要精细地定制 CDCI 和 SCM 工具,以保持事情的实用性和简单性,无论存储库大小如何。

隔江千里

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

慕尼黑的夜晚无繁华

抱歉,因为它不是具体的解决方案,但它确实有效,我尝试过的是,由于某种原因,我不得不将所有项目仅添加到一个存储库,所以我按照以下步骤操作:使用主分支创建一个新的存储库(保持为空)使用相应的项目名称从主(空)创建一个分支(使用您拥有的相应项目创建任意数量的分支)然后使用以下命令签出该分支:$git&nbsp;checkout&nbsp;-b&nbsp;<branch_name>如果源已经存在,则先将其删除,然后使用以下命令添加新创建的远程源:$&nbsp;git&nbsp;remote&nbsp;rm&nbsp;origin&nbsp;&nbsp;(To&nbsp;remove&nbsp;remote&nbsp;origin)$&nbsp;git&nbsp;remote&nbsp;add&nbsp;origin&nbsp;https://github.com/<USERNAME>/<REPO_NAME>.git对于操作授权,您需要使用以下命令:$&nbsp;git&nbsp;remote&nbsp;set-url&nbsp;origin&nbsp;<Access_Token>@github.com/<USERNAME>/<REPO_NAME>.git现在,您可以通过以下命令直接将代码和文件推送到分支:$&nbsp;git&nbsp;push&nbsp;-u&nbsp;-f&nbsp;origin&nbsp;<branch_name>如果上述命令引发错误,请首先尝试通过以下命令添加文件,然后再次尝试步骤 6。$&nbsp;git&nbsp;add&nbsp;.这对我有用,因为每当我想更改/拉取任何项目中的某些内容时,我只需克隆一个特定分支,在其中进行更改,然后将更改仅推送到该特定分支。这样您就可以在一个存储库下拥有多个项目。我自己尝试了这个解决方案,只是为了绕过孤儿分支或拥有多个存储库的棘手方式。
随时随地看视频慕课网APP

相关分类

Java
我要回答