我想创建一个包含子存储库的仓库,为此我在工作区中创建了一个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
我不认为这个解决方案适合我。有什么想法吗?
答案 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的子回购。