2

我想创建一个父 git 存储库,其中将有多个 git 存储库,但我不希望父 git 存储库跟踪子存储库的所有提交。提交历史可以放在单独的子仓库中。我只是希望当我从父仓库拉出时,我希望所有子仓库都被拉出,当我推送父仓库时,所有子仓库提交的更改都应该被推送到服务器中它们各自的仓库。此外,当我们对任何子存储库进行一些更改时,它应该能够推送和拉取单个 git 存储库,并且下次拉取父存储库应该提供更新的存储库

我正在尝试使用子模块/子树,但无法实现。我听说过git subrepo但一直没能找到关于它的好教程

4

1 回答 1

2

但我不希望父 git repo 跟踪子 repos 的所有提交

这正是git submodule所做的:父 repo 只记录主 subrepo 树 SHA1,称为gitlink父 repo 中的特殊条目

每次您在其中一个子存储库中进行一个或多个提交(并推回其远程上游存储库)时,父存储库将不会记录任何内容,直到您返回到所述父存储库、添加、提交和推送。
但是您将只添加并提交一个元素:gitlink,即表示修改后的子存储库的根树的新 SHA1。

当您克隆父仓库时,请使用git clone --recurse-submodule

git clone --recurse-submodule /url/parent/repo

这将自动克隆所有子存储库,其确切的 SHA1 先前由父存储库记录。

于 2017-10-25T18:47:07.997 回答