使用子存储库创建存储库

时间:2017-03-31 02:43:16

标签: git github

我想创建一个包含子存储库的仓库,为此我在工作区中创建了一个sample文件夹:

$ cd ~/workspace/
$ mkdir samples
$ cd samples
$ pwd
~/workspace/samples

这意味着示例文件夹将是主存储库(类似容器), 例如,我想拥有以下结构:

$ mkdir sample-java
$ mkdir sample-c-plus-plus
$ mkdir sample-csharp
$ ls -l
total 3
drwxr-xr-x  juanca  staff  408 Mar 30 20:04 sample-java
drwxr-xr-x  juanca  staff  408 Mar 30 20:12 sample-c-plus-plus
drwxr-xr-x  juanca  staff  408 Mar 30 20:23 sample-csharp

我想在我的github帐户中为上面列出的每个文件夹提供一个回购,例如:

|- samples -----------------> github.com/my-user/samples.git
    |- sample-java ---------> github.com/my-user/samples.git/sample-java.git
    |- sample-c-plus-plus --> github.com/my-user/samples.git/sample-c-plus-plus.git
    |- sample-csharp -------> github.com/my-user/samples.git/sample-csharp.git

我想控制每个sample-*文件夹,然后将它们全部归入主存储库。

有可能吗?或者最好的方法是什么?

我发现了与git子模块类似的东西,但这会添加一个现有的仓库,例如:

$ git submodule add https:// github.com/any-account/any-project.git any-project

我不认为这个解决方案适合我。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

  

我发现了与git子模块类似的东西,但这会添加一个现有的仓库。

这实际上是解决方案。

您的每个子回购都应该是他们自己的个人回购(即直接在github.com/my-user下)。
这样,您可以将它们声明为主仓库的子模块

cd samples
git submodule add github.com/my-user/sample-java.git sample-java
git submodule add github.com/my-user/sample-c-plus-plusgit sample-c-plus-plus
git submodule add github.com/my-user/csharp.git sample-csharp

那样:

  • 回购git clone --recursive的任何samples会自动克隆并检查各自SHA1的子回购。
  • 每个仓库中完成的任何修改都可以单独跟踪,添加并提交(并推送)到自己的仓库。