如何在本地更改子模块 remote 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 文件中设置 urls 也是可以的。也许还有其他选择。
您可以随时编辑 .gitmodules
中的 url,然后编辑 git submodule sync
。 .gitmodules
中的更改将显示在 git status
中,但也许您可以接受。
最好的办法是找到一种方法让 url Linux 和 Windows 都能理解,比如不使用挂载点。不能直接用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 路径):
[submodule "SubmoduleName"]
path = SubmoduleFolder
url = /mnt/server/project/SubmoduleName.git
您可以这样更改以使用相对 URLs(注意:相对 URL 语法是 "unix way",但它在 Windows 下可以正常工作也是。)
[submodule "SubmoduleName"]
path = SubmoduleFolder
url = ../SubmoduleName.git
提交并推送此更改。现在你可以像往常一样在 Windows 或 Linux 下克隆你的主项目,子模块路径将自动解决。
我有一个项目应该在 Windows 和 Linux 下工作。我将中央存储库作为文件夹放在我们公司的服务器上。它旁边是一个存储库,它是该存储库的子模块。
现在我可以使用 \server\project
之类的东西访问 Windows 下的这个文件夹。 Linux 下的文件夹名称是 /mnt/server/project
。项目仓库和子模块仓库都放在该文件夹的不同子目录中。当我在 Windows 上添加子模块并推送后,我想在 Linux 上更新我的项目时,这给我带来了问题。有没有办法在不将这些更改提交回中央存储库的情况下在本地更改 .gitmodules 中的子模块 url?
根据我所使用的平台,在 .gitmodules 文件中设置 urls 也是可以的。也许还有其他选择。
您可以随时编辑 .gitmodules
中的 url,然后编辑 git submodule sync
。 .gitmodules
中的更改将显示在 git status
中,但也许您可以接受。
最好的办法是找到一种方法让 url Linux 和 Windows 都能理解,比如不使用挂载点。不能直接用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 路径):
[submodule "SubmoduleName"]
path = SubmoduleFolder
url = /mnt/server/project/SubmoduleName.git
您可以这样更改以使用相对 URLs(注意:相对 URL 语法是 "unix way",但它在 Windows 下可以正常工作也是。)
[submodule "SubmoduleName"]
path = SubmoduleFolder
url = ../SubmoduleName.git
提交并推送此更改。现在你可以像往常一样在 Windows 或 Linux 下克隆你的主项目,子模块路径将自动解决。