[英]How to change a submodule remote url locally having to commit back these changes
我有一个应该在Windows和Linux下工作的项目。 我将一个中央存储库作为文件夹放置在我们公司的服务器上。 它旁边是一个存储库,它是该存储库的子模块。
现在,我可以使用\\\\server\\project
类的文件在Windows下访问此文件夹。 在Linux下,文件夹名称为/mnt/server/project
。 项目存储库和子模块存储库都放在该文件夹的不同子目录中。 在Windows上添加子模块并推送后,要在Linux上更新项目时,这给我带来了问题。 有没有一种方法可以在本地更改.gitmodules中的子模块URL,而无需将这些更改提交回中央存储库?
根据我所使用的平台,也可以在.gitmodules文件中设置网址。 也许还有其他选择。
您始终可以在.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
) \\\\server\\project\\MainProject.git
(Windows) /mnt/server/project/SubmoduleName.git
) \\\\server\\project\\SubmoduleName.git
(Windows) 并且您的.gitmodules
文件应该包含这样的条目(假设您已经存储了linux路径):
[submodule "SubmoduleName"]
path = SubmoduleFolder
url = /mnt/server/project/SubmoduleName.git
您可以这样更改以使用相对URL(注意:相对URL语法是“ unix方式”,但在Windows下也可以正常工作。)
[submodule "SubmoduleName"]
path = SubmoduleFolder
url = ../SubmoduleName.git
提交并推动此更改。 现在,您可以照常在Windows或Linux下克隆您的主项目,子模块路径将自动解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.