将通用代码添加为git子模块出现“索引中已存在”?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (140)

我使用git submodule add的路径选项来指定文件夹:

git submodule add url_to_repo projectfolder

但后来得到了错误:

'projectfolder' already exists in the index"

这是我的存储库所需的结构:

repo
|-- projectfolder
    |-- folder with common code

可以直接在repo中将git子模块添加到新文件夹中,但不能添加到项目文件夹中。

提问于
用户回答回答于

我也遇到了同样的问题,经过几个小时的寻找,我找到了答案。

我所犯的错误有点不同:<path> already exists and is not a valid git repo

解决方案是不创建将容纳子模块的目录。目录将作为git submodule add命令。

而且,参数应该是相对于parent-repo根的,而不是工作目录,所以要小心。

用户回答回答于

git ls-files --stage projectfolder

该输出的第一列将告诉你索引中的对象是什么类型projectfolder

我怀疑你会看到像这样的东西:

160000 d00cf29f23627fc54eb992dde6a79112677cd86c 0   projectfolder

(即以一行开头的行160000),在这种情况下,存储库projectfolder已经被添加为“gitlink”。如果它没有出现在输出中git submodule,并且你想重新添加它作为子模块,你可以这样做:

git rm --cached projectfolder

然后:

git submodule add url_to_repo projectfolder

将存储库作为子模块添加

扫码关注云+社区