如何使用子模块重命名git存储库?
我在目录如何使用子模块重命名git存储库?,git,repository,git-submodules,Git,Repository,Git Submodules,我在目录projects/myRepo中有一个包含子模块的git存储库,我想将目录重命名为projects/myRepo 根据问题,只需使用mv即可。但git一直告诉我,在一个有子模块的回购协议中 致命:不是git存储库:projects/myRepo/.git/path/to/submodule``` 即使对于git状态 子模块配置: [submodule "path/to/submodule"] path = path/to/submodule url = https:/
projects/myRepo
中有一个包含子模块的git存储库,我想将目录重命名为projects/myRepo
根据问题,只需使用mv
即可。但git一直告诉我,在一个有子模块的回购协议中
致命:不是git存储库:projects/myRepo/.git/path/to/submodule```
即使对于git状态
子模块配置:
[submodule "path/to/submodule"]
path = path/to/submodule
url = https://github.com/user/projectName.git
不知怎的,子模块的“内部路径”没有得到更新?!有没有办法告诉git更新这些子模块路径 由于的测试(克隆repo中的子模块的克隆、初始化和更新)在重命名包含所述子模块的目录时按预期工作,我怀疑您原来的git repo子模块中的子模块.git
本身一定出了问题
您可以在第一个子模块中比较/查找引用“myRepo
”的任何文件。您还可以比较两个子模块的内容(第一个是您试图重命名的子模块,第二个是您克隆的repo中包含的子模块)更改项目目录后,我也遇到了相同的错误。我有一个iOS6Xcode4项目,但这不重要 对于每个子模块,您需要更改它认为自己所在的绝对路径。路径在该子模块的.git文件中设置。子模块中的git是一个文件,而不是标准git目录中的目录 对于每个子模块,更改.git文件中的.gitdir行。以下是我的项目中的一个示例: 文件:/path/to/project/submodules/RestKit/.git 之前 gitdir:/path/to/project/.git/modules/submodules/RestKit 之后
gitdir:/path/to/project/.git/modules/submodules/RestKit我确实经历过完全相同的行为。我设法通过删除带有子模块的目录,用正确的名称将它们重新创建为空目录,然后运行
git submodule update--init
重新初始化它们来修复它。现在都修好了。可能是一些权限问题(我之前从备份中检索到了这些目录,对它们的权限有时很奇怪)。今天,我在重命名子模块时遇到了同样的问题,最后我通过使用以下步骤修复了它:
假设旧模块名为old/module
,新模块名为new/module/path
repo_root
),mv old/module new/module/path
.git/modules
mv old/module new/module/path
(必要时先创建文件夹)new/module/name/config
:更新工作树
条目。它应该是从此配置文件到repo\u root/new/module/path
repo_root
并编辑new/module/path/.git
,将gitdir
更改为从该文件到repo_root/.git/modules/new/module/path的相对路径
.git/config
:找到包含[子模块“旧/模块”]
的行,并更新到[子模块“新/模块/路径”]
这应该行得通。.gitmodule文件中有什么?@Weston,请查看我更新的问题。但即使我将此部分从.gitmodules文件中删除,也会出现相同的错误。当我将父目录重新命名为原始名称时,git不再抱怨。嗯。。我只是试着用一个子模块做一个测试回购。然后我克隆了它,初始化并更新了克隆中的子模块,然后用mv重命名了克隆。一切似乎都如预期的那样工作…?是的,我用一个新的克隆做了同样的尝试,也没有出现问题-这只是一个特殊的回购协议,另请注意这里的名称。。一、 不是OP,进行了上述测试。:-)但也许OP应该做同样的测试来验证他的安装。@Weston抱歉,我写这篇文章时还没有完全清醒;)我无法重现这个问题,所以我想我在重构项目时把事情搞砸了。如果我有时间的话,我会调查这起被破坏的回购协议,直到那时,我创建了一个新的克隆,它工作得很好。感谢您的帮助。我还必须在.git/modules/path/to/project/submodules/RestKit/config中更改我的工作树路径