0

我是一个快乐的 Github 用户。随着时间的推移,我积累了一些无关紧要的小玩具回购。我现在想创建一个容器 repo - 称之为 playpen,将我的各种玩具项目拉到父 playpen 下作为 git 子模块,然后吹走源玩具 repos。玩具只能放在围栏里。当我使用这个配方尝试这个时:http: //git.or.cz/gitwiki/GitSubmoduleTutorial我发现了一个大问题。看,我想要完全的回购,让它们只生活在游戏围栏下。当我继续吹走 github 中的 repos 时,我无法访问 playpen 中的链接。嗯?

有人可以向我解释如何做到这一点吗?提前致谢

干杯,道格

4

2 回答 2

3

子模块是将存储库链接在一起的一种方式,但每个子模块都是它自己完整的自包含存储库。当您将存储库添加为另一个存储库的子模块时,您只是将存储库链接在一起,而不是将数据移动到父存储库中。出于这个原因,您不能在不破坏此链接的情况下删除作为子模块的存储库。

于 2009-10-11T19:30:27.930 回答
0

您可以将各种存储库组合到一个存储库中,但不能与子模块一起使用。虽然我可以建议剂量的方法有一个严重的缺点。合并您的玩具项目后,它们不再充当单独的项目。你不能只对一个项目作出承诺,你必须同时对所有项目作出承诺。同样,您不能只分支一个项目,每个分支都是所有项目的一个分支。因此,如果您使用了多个分支,或者将来有可能希望对单个项目进行分支,那么请坚持使用单独的存储库。

如果毕竟你仍然想合并你的各种存储库,那么你可以使用如何使用子树合并策略的部分想法。虽然由于您不打算保留旧存储库,但您永远不需要使用子树合并。

子树合并策略文档中的重要部分是以下命令,您应该从新的容器存储库中运行这些命令:

$ git remote add -f Bproject /path/to/B
$ git merge -s ours --no-commit Bproject/master
$ git read-tree --prefix=dir-B/ -u Bproject/master
$ git commit -m "Merge B project as our subdirectory"

由于您要删除原始存储库,因此您还可以删除您在开始时添加的远程,这样它就不会混乱。

$ git remote rm Bproject

此时,您的容器存储库包含 Bproject。您可以重复这些步骤以合并其他项目。但是,正如我之前提到的,只有 master 分支被合并,您的项目可能拥有的任何其他分支都不会被合并。

于 2009-11-05T07:01:01.417 回答