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
要转换您现有的文件夹结构以使用适当的子模块:
确保父存储库和模块存储库都没有任何更改。换句话说,确保 git status
告诉您您有 nothing to commit, working tree clean
.
将当前模块存储库移开,以备份它。换句话说 mv Modules/Module1 Modules/Module1.bak
.
将其添加为子模块:git submodule add -f https://github.com/path_to/module1 Modules/Module1
。 -f
是必需的,因为 Modules
仍然存在于您的 .gitignore
.
确保文件结构符合您的喜好。 运行 构建、测试等 运行 git status
以确保 .gitmodules
文件和模块本身显示为分阶段更改。当您对一切都感到满意时,提交更改。
从第一步开始重复,直到转换完所有子模块。
从 Modules
目录中删除备份模块文件夹。
从您的 .gitignore
.
中删除 /Modules
恭喜(???)您现在有了子模块。
我将项目的子模块保存在不同的存储库中。
我将子模块托管在主项目的 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
要转换您现有的文件夹结构以使用适当的子模块:
确保父存储库和模块存储库都没有任何更改。换句话说,确保
git status
告诉您您有nothing to commit, working tree clean
.将当前模块存储库移开,以备份它。换句话说
mv Modules/Module1 Modules/Module1.bak
.将其添加为子模块:
git submodule add -f https://github.com/path_to/module1 Modules/Module1
。-f
是必需的,因为Modules
仍然存在于您的.gitignore
.确保文件结构符合您的喜好。 运行 构建、测试等 运行
git status
以确保.gitmodules
文件和模块本身显示为分阶段更改。当您对一切都感到满意时,提交更改。从第一步开始重复,直到转换完所有子模块。
从
Modules
目录中删除备份模块文件夹。从您的
中删除.gitignore
./Modules
恭喜(???)您现在有了子模块。