在父git存储库中创建多个git子repos

时间:2017-10-24 10:07:41

标签: git git-submodules git-subtree git-subrepo

我想创建一个父git repo,其中将有多个git repos,但我不希望父git repo跟踪子repos的所有提交。提交历史记录可以放在单个子回购中。我只想要那个当我从父仓库中取出时,我想要拉动所有子仓库,当我推送父仓库时,所有子仓库提交的更改应该被推送到他们各自的服务器仓库中。当我们对任何subrepos进行一些更改时,它应该能够推送和拉动单个git repos,并且下次父repo的拉动应该给出更新的repos

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

1 个答案:

答案 0 :(得分:2)

  

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

这正是 git submodule 的作用:父回购仅记录主要子树SHA1,称为 gitlink ({{3 }})

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

克隆父代回购时,请使用special entry in the parent repo

执行此操作
git clone --recurse-submodule /url/parent/repo

这将自动克隆所有subrepo,它们是由父仓库先前记录的确切SHA1。