创建包含子存储库的存储库

JUA*_*A M 5 git github

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

$ cd ~/workspace/
$ mkdir samples
$ cd samples
$ pwd
~/workspace/samples
Run Code Online (Sandbox Code Playgroud)

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

$ 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
Run Code Online (Sandbox Code Playgroud)

我想要在我的 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
Run Code Online (Sandbox Code Playgroud)

我希望控制每个sample-*文件夹,然后将所有文件夹分组到主存储库中。

是否可以?或者什么是最好的方法?

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

$ git submodule add https:// github.com/any-account/any-project.git any-project
Run Code Online (Sandbox Code Playgroud)

我认为这个解决方案对我不起作用。任何想法?

Von*_*onC 4

我发现了与 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
Run Code Online (Sandbox Code Playgroud)

那样:

  • 任何git clone --recursive存储库samples都会自动克隆并在各自的 SHA1 上签出这些子存储库。
  • 每个存储库中完成的任何修改都可以单独跟踪、添加并提交(并推送)到其自己的存储库。