您有 2 个主要选项来管理 git 中的子项目。
Git 没有任何依赖管理器,最常见的选项如下:
Submodules
允许将外部存储库嵌入到源树的专用子目录中,始终指向特定的提交。
git submodule
为了使用子模块,每个文件夹都将是一个独立的存储库,并将被管理和存储在不同的位置。Git 将检查特定的提交(提交、版本、标签等)并将其用作子模块的HEAD。大多数情况下,子模块将处于分离的 HEAD 中。
# once you have a repo simply add it to git
git submodule add <url>
一旦将投影添加到您的存储库中,您必须初始化并更新它。
git submodule init
git submodule update
从Git 1.8.2--remote
开始,添加了新选项
git submodule update --remote --merge
将fetch
在每个子模块中来自上游的最新更改merge them in
,以及子模块check out
的最新版本。
正如文档所描述的那样:
--remote
此选项仅对更新命令有效。不要使用超级项目记录的 SHA-1 来更新子模块,而是使用子模块的远程跟踪分支的状态。
这相当于在每个子模块中运行 git pull。
如何修复或更改子模块内的代码?
使用 submodule 会将您的代码作为其内容[new folder]的一部分放在您的主项目中。
将其本地放在文件夹中或将其作为子模块的一部分之间的区别在于,在子模块中,内容被管理(提交)到不同的独立存储库,如上所述。
这是子模块的图示 - 另一个项目中的项目,其中每个项目都是一个独立的项目。

git subtree
Git 子树允许您插入任何存储库作为另一个存储库的子目录
非常相似,submodule
但主要区别在于代码的管理位置。在子模块中,内容被放置在一个单独的存储库中并在那里进行管理,这允许您将其克隆到许多其他存储库。
subtree
将内容作为根项目的一部分进行管理,而不是在单独的项目中。
无需写下如何设置它以及了解如何使用它,您只需阅读这篇将解释一切的优秀文章即可。
https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/