繁体   English   中英

如何在本地更改子模块远程URL,必须重新提交这些更改

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM