如何创建具有两个位置的 Git 子模块?

问题描述 投票:0回答:3

我有以下项目结构,其中想要将标记的*文件夹移动到单个 git 子模块,因为它们相互依赖。这在 git 中可能吗?

main_project
|
|-backend
|  - backend_submodule*
|  - other
|
|-frontend
   - frontend_subodule*
   - other
git git-submodules
3个回答
2
投票

如果您使用的是 Linux 或 MacOS,则始终可以使用符号链接。

mysubmodule
下的子模块
main_project
包含
backend
frontend
。然后使用您想要的名称创建两个符号链接。对于您的构建环境,它看起来就像您想要的目录结构,即使实际的 git 子模块仅位于一个目录中。

您可以将符号链接提交到 Git 存储库中(只要您不需要在 Windows 中使用它,它们就可以工作),因此这是一次性设置。

main_project
|
|-mysubmodule
|  -backend
|  -frontend
|
|-backend
|  - backend_submodule -> ../mysubmodule/backend
|  - other
|
|-frontend
   - frontend_subodule -> ../mysubmodule/frontend
   - other

0
投票

不。 Git 存储库控制文件夹及其子文件夹。 (你描述的问题是一个常见问题,但你只是接受了常见的解决方案:前端和后端是不同的存储库。)


0
投票

对于像这样紧密耦合的历史记录,只需将它们作为独立根分支在您的主存储库

git worktree add
中携带,而不是通过子模块助手。这样,当您克隆主存储库时,您就拥有了所有内容,并且仍然拥有单独的历史记录,如果代码更广泛有用,可以将其拆分到其他地方的单独存储库中。

© www.soinside.com 2019 - 2024. All rights reserved.