Linux 如何在本地更改子模块远程url必须提交这些更改

Linux 如何在本地更改子模块远程url必须提交这些更改,linux,windows,git,git-submodules,Linux,Windows,Git,Git Submodules,我有一个项目,应该在Windows和Linux下工作。我将一个中央存储库作为文件夹放在我们公司的服务器上。它旁边是一个存储库,它是该存储库的子模块 现在,我可以使用类似于\\server\project的工具在Windows下访问此文件夹。在Linux下,文件夹名为/mnt/server/project。项目repo和子模块repo都放在该文件夹的不同子目录中。当我在Windows上添加子模块并推送之后,想要在Linux上更新我的项目时,这会给我带来问题。有没有一种方法可以在本地更改.gitmo

我有一个项目,应该在Windows和Linux下工作。我将一个中央存储库作为文件夹放在我们公司的服务器上。它旁边是一个存储库,它是该存储库的子模块

现在,我可以使用类似于
\\server\project
的工具在Windows下访问此文件夹。在Linux下,文件夹名为
/mnt/server/project
。项目repo和子模块repo都放在该文件夹的不同子目录中。当我在Windows上添加子模块并推送之后,想要在Linux上更新我的项目时,这会给我带来问题。有没有一种方法可以在本地更改.gitmodules中的子模块url,而不将这些更改提交回中央存储库


根据我所在的平台,在.gitmodules文件中设置URL也可以。也许还有其他选择

您始终可以在
.gitmodules
中编辑url,后跟
git submodule sync
.gitmodules
中的更改将显示在
git status
中,但也许您可以接受


最好的方法是找到一种Linux和Windows都能理解的url,比如不使用挂载点。你不能直接使用IP吗?类似于
192.168.0.42/project/submodule.git
?(当然,替换为服务器的IP。或者,如果您有主机名,显然会更好)。

您应该在
.gitmodules
文件中使用相对路径。 如果您的两个存储库存储在服务器下的以下文件夹中:

  • /mnt/server/project/MainProject.git
    (Linux)
    \\server\project\MainProject.git
    (Windows)
  • /mnt/server/project/SubmoduleName.git
    (Linux)
    \\server\project\SubmoduleName.git
    (Windows)
并且您的
.gitmodules
文件应该包含这样一个条目(假设您存储了linux路径):

您可以这样更改以使用相对URL(注意:相对URL语法是“unix方式”,但在Windows下也可以正常工作。)

提交并推动此更改。现在您可以像往常一样在Windows或Linux下克隆主项目,子模块路径将自动解决

[submodule "SubmoduleName"]
    path = SubmoduleFolder
    url = /mnt/server/project/SubmoduleName.git 
[submodule "SubmoduleName"]
    path = SubmoduleFolder
    url = ../SubmoduleName.git