Git支持子模块URL的本地名称吗?

Git支持子模块URL的本地名称吗?,git,Git,Git有一个很好的机制为远程存储库提供本地名称。这种机制简化了很多。Git还支持子模块,并根据子模块存储库URL的绝对地址将其保留在.gitmodules文件中。但是Git是否支持向子模块注册表添加名称而不是绝对URL 例如,假设我有一个多模块存储库,某一天我决定从一个Git托管服务迁移到另一个Git托管服务,或者我的本地网络地址更改,或者我们迁移到另一个具有不同路径的系统。在这样的迁移之后,我需要通过新的提交来修复URL,但是当我想签出过去的特定标记时,这将尝试从旧服务获取存储库,这将导致不存

Git有一个很好的机制为远程存储库提供本地名称。这种机制简化了很多。Git还支持子模块,并根据子模块存储库URL的绝对地址将其保留在.gitmodules文件中。但是Git是否支持向子模块注册表添加名称而不是绝对URL

例如,假设我有一个多模块存储库,某一天我决定从一个Git托管服务迁移到另一个Git托管服务,或者我的本地网络地址更改,或者我们迁移到另一个具有不同路径的系统。在这样的迁移之后,我需要通过新的提交来修复URL,但是当我想签出过去的特定标记时,这将尝试从旧服务获取存储库,这将导致不存在的存储库错误。在这种情况下,绝对URL不容易使用


有没有可能给子模块地址命名,这样我就可以像更改遥控器一样更改地址,而不会遇到问题?或者,如果我选择了某个URL,那么我将永远坚持使用它(我没有考虑历史重写)?

子模块是具有单独配置的独立存储库<将code>cd放入每个子模块目录,然后运行
git remote set url
。这允许使用
git pull
单独更新子模块

返回超级项目并修复
.gitmodules
中的URL;编辑文件或运行
git config-f.gitmodules子模块.url
只是占位符)

运行git子模块同步;这将更新的URL从超级项目的
.gitmodules
传输到
.git/config
。Git实际上不使用
.gitmodules
中的URL,只使用
.Git/config
中的URL
.gitmodules
是在存储库中保留子模块及其URL列表的方法。要使
git
了解URL,需要
git-sync
git clone——递归
自动调用
git sync


git add
git commit
git push
保存并发布您在
gitmodules
和子模块中的更改。

迁移时,您使用
git remote set URL
更改了超级项目的URL,对吗?您需要为所有迁移的子模块执行此操作。子模块只是具有单独配置的单独存储库<将code>cd放入每个子模块目录,然后运行
git remote set url
。返回超级项目并修复
.gitmodules
中的URL。运行
git子模块sync
。添加、提交、推送,这将如何影响历史记录?据我所知,旧URL将保留在.gitmodules中,对吗?@phd我的意思是,它们将保留在
.gitmodules
历史记录中。我想的是给URL起一些名字(比如
git remote
),这样
.gitmodules
就可以独立于URL了。还是我还是错了?没有这样的别名。你为什么关心GitModule的历史?只需在那里修复URL,然后继续。子模块确实很棘手。不过,给这些东西命名并没有直接的帮助:您需要在
git clone
git submodule init
时间进行间接寻址,而在所有情况下获得间接寻址的唯一真正方法是使用
而不是
技巧。另一方面,与超级项目相关的名称在Git中很有用,但它们并不存在。