我想添加一些git子模块。 我已经收到了两个共享一些公共代码的项目。共享代码只是复制到两个项目中。我为公共代码创建了一个单独的git repo,并将其从项目中删除,计划将其作为git子模块添加。

我使用了git子模块add的路径选项来指定文件夹:

git submodule add url_to_repo projectfolder

但随后出现了错误:

'projectfolder' already exists in the index"

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

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

可以直接在repo中添加git子模块,或者添加到那里的新文件夹中,但不能添加到项目文件夹中。问题是,它真的需要在项目文件夹.. 对此我能做什么,我对git子模块add的路径选项有什么误解?


当前回答

不知道这是否有用,尽管我在试图从IntelliJ 15中提交文件时遇到了同样的问题。最后,我打开SourceTree,在那里我可以简单地提交文件。问题解决了。不需要发出任何花哨的git命令。只是顺便提一下,以防有人有同样的问题。

其他回答

不知道这是否有用,尽管我在试图从IntelliJ 15中提交文件时遇到了同样的问题。最后,我打开SourceTree,在那里我可以简单地提交文件。问题解决了。不需要发出任何花哨的git命令。只是顺便提一下,以防有人有同样的问题。

如果git控制下存在一个名为x的文件夹,你想添加一个同名的子模块,你应该先删除x文件夹并提交。

由@ujjwal-singh更新:

提交是不需要的,分期就足够了。Git add / Git rm -r

转到存储库文件夹。删除.gitmodules中的相关子模块。选择显示隐藏文件。转到。git文件夹,从模块文件夹和配置中删除子模块。

如果你使用的是Ubuntu,记得也要从垃圾中删除文件。

在我的情况下,我把文件移到垃圾桶。

手动删除子模块涉及许多步骤,这对我来说是有效的。

假设你在项目的根目录下,并且示例git模块名为“c3-pro-ios-framework”

删除与子模块关联的文件

rm -rf .git/modules/c3-pro-ios-framework/

删除配置中对子模块的任何引用

vim .git/config

删除.gitmodules

rm -rf .gitmodules

将它从缓存中移除而不使用“git”

git rm --cached c3-pro-ios-framework

添加子模块

git submodule add https://github.com/chb/c3-pro-ios-framework.git