如何使GitHub项目成为存储库级别上更大解决方案的一部分?

如何使GitHub项目成为存储库级别上更大解决方案的一部分?,git,github,Git,Github,我正在做一个项目,将有以下三个组成部分(一起工作): 自定义服务器端代码 自定义客户端代码 一个作为GitHub项目的第三方库(BSD许可) 作为开发的一部分,我可能会对第三方库项目进行更改,并且我希望将更改反馈给项目所有者,最好通过GitHub fork/pull请求 问题是,如果我不想让我的存储库完全开源并托管在GitHub上,我该如何构建我的存储库?如果它是100%封闭源代码的,我会有一个包含3个主文件夹的存储库,类似于ServerSide,ClientSide和LibraryXY但是

我正在做一个项目,将有以下三个组成部分(一起工作):

  • 自定义服务器端代码
  • 自定义客户端代码
  • 一个作为GitHub项目的第三方库(BSD许可)
作为开发的一部分,我可能会对第三方库项目进行更改,并且我希望将更改反馈给项目所有者,最好通过GitHub fork/pull请求


问题是,如果我不想让我的存储库完全开源并托管在GitHub上,我该如何构建我的存储库?如果它是100%封闭源代码的,我会有一个包含3个主文件夹的存储库,类似于
ServerSide
ClientSide
LibraryXY
但是我猜将第三方库的内容复制到
LibraryXY
会使您很难在GitHub上将更改内容反馈给项目所有者。

您可以使用
git子模块
git子树
命令

git存储库中的子模块就像一个子目录,它本身就是一个独立的git存储库。当git中的项目依赖于其他项目的特定版本时,这是一个有用的特性

子树允许子项目包含在子目录中 主项目的,可选包括子项目的 整个历史。例如,可以包含库的源代码 作为应用程序的子目录


基于您的项目结构,我建议您使用
git子树

谢谢。从描述来看,子模块似乎就是我要寻找的东西——有3个目录,其中一个以某种方式配置为从GitHub获取源代码。我是否能够将对源代码所做的更改“推送”回GitHub,还是只有一种方式?您应该能够做到:@Borek A子模块本身就是一个成熟的存储库。所以是的。请注意,
子模块
机制的设计不如git的其他部分好,有时可能会有点混乱。