我在git超级项目中添加了一个新的子模块:
git submodule add wrong-url project-directory
这是一个错误的项目,因此我将其删除:
git submodule deinit -f project-directory
我尝试使用正确的网址添加它:
git submodule add right-url project-directory
不幸的是,它产生了一个错误:already exists in the index
。
我发现这可以解决问题: Issue with adding common code as git submodule: "already exists in the index"
因此,我运行以下命令:
git rm --cached project-directory
git rm -r --cached project-directory
但是,正如in this comment所述,我收到错误消息project-directory already exists and is not a valid git repo
。因此,我删除了project-directory
,并成功添加了project-directory
。
问题是内容链接到wrong-url
。
我编辑了.gitmodules
(其中URL错误),结果是相同的。
我还使用git remote rm origin
更改了远程URL,并使用git remote add right-url
添加了正确的URL,但这无济于事。
我很好奇这个错误的远程URL的存储位置以及如何解决这个问题?
答案 0 :(得分:2)
这是一个错误的项目,因此我将其删除:
git submodule deinit -f project-directory
这将从.git/config
中删除条目,并清除项目目录的内容。
但是,.gitmodules
文件中的条目仍然完整。要摆脱它,只需从git中删除现在为空的目录,它将自动清除该条目:
git rm -f project-directory
最后,您应该删除位于.git/modules
中的子模块的实际git目录:
rm -rf .git/modules/project-directory
就是这样,子模块不应该存在任何痕迹,您可以添加正确的子模块。