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