添加了错误的git子模块,无法更改其来源

时间:2018-07-14 10:41:21

标签: git git-submodules

我在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的存储位置以及如何解决这个问题?

1 个答案:

答案 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

就是这样,子模块不应该存在任何痕迹,您可以添加正确的子模块。