Git/Github 将子目录重定向到其他存储库

Git/Github Redirecting subdirectories to other repositories

我将项目的子模块保存在不同的存储库中。

我将子模块托管在主项目的 Modules 文件夹中。

子模块在根项目的 .gitignore` 文件中被忽略。

没关系,但我想创建指向 github 上的子模块的链接。

我尝试使用子模块。但是,如果我使用子模块,我猜文件夹内容 (Modules/..) 一定是空的。

我该怎么做?

我的本地工作区:

RootFolder << user/RootFolder
├── .git
├── README.md
├── .gitignore
├── composer.json
└── Modules
    ├── Module1 << user/Module1
    │   ├── .git
    │   ├── README.md
    │   └── composer.json
    └── Module2 << user/Module2
        ├── .git
        ├── README.md
        └── composer.json

RootFolder/.gitignore内容:

/Modules

在 Github 上看起来像这样。 (因为它应该是)

user/RootFolder
├── README.md
└── composer.json

但是,我想创建与忽略的文件夹同名的链接:

user/RootFolder
├── .gitignore
├── Modules
│   ├── Module1 >> Redirect to https://github.com/user/Module1 (How can I do that?)
│   └── Module2 >> Redirect to https://github.com/user/Module2 (How can I do that?)
├── README.md
└── composer.json

要转换您现有的文件夹结构以使用适当的子模块:

  1. 确保父存储库和模块存储库都没有任何更改。换句话说,确保 git status 告诉您您有 nothing to commit, working tree clean.

  2. 将当前模块存储库移开,以备份它。换句话说 mv Modules/Module1 Modules/Module1.bak.

  3. 将其添加为子模块:git submodule add -f https://github.com/path_to/module1 Modules/Module1-f 是必需的,因为 Modules 仍然存在于您的 .gitignore.

  4. 确保文件结构符合您的喜好。 运行 构建、测试等 运行 git status 以确保 .gitmodules 文件和模块本身显示为分阶段更改。当您对一切都感到满意时,提交更改。

  5. 从第一步开始重复,直到转换完所有子模块。

  6. Modules 目录中删除备份模块文件夹。

  7. 从您的 .gitignore.

    中删除 /Modules

恭喜(???)您现在有了子模块。