我有以下项目结构,其中想要将标记的*文件夹移动到单个 git 子模块,因为它们相互依赖。这在 git 中可能吗?
main_project
|
|-backend
| - backend_submodule*
| - other
|
|-frontend
- frontend_subodule*
- other
如果您使用的是 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
不。 Git 存储库控制文件夹及其子文件夹。 (你描述的问题是一个常见问题,但你只是接受了常见的解决方案:前端和后端是不同的存储库。)
对于像这样紧密耦合的历史记录,只需将它们作为独立根分支在您的主存储库和
git worktree add
中携带,而不是通过子模块助手。这样,当您克隆主存储库时,您就拥有了所有内容,并且仍然拥有单独的历史记录,如果代码更广泛有用,可以将其拆分到其他地方的单独存储库中。