我正在尝试将git子模块添加到我的项目中,特别是ShareKit。我的项目是一个git repo,当我尝试输入
时git submodule add git://github.com/ShareKit/ShareKit.git Submodules/ShareKit
进入终端我得到一个错误,说子模块已经存在。我想我刚刚在这个项目中添加了它,并最终没有使用它并且不正确地从项目目录中删除它(最有可能删除子模块文件夹)。所以我试着去做
git rm --cached Submodules/ShareKit
根据How do I remove a submodule?,现在当我尝试使用第一位代码再次添加子模块时,我得到了这个:
A git directory for 'Submodules/ShareKit' is found locally with remote(s):
origin git://github.com/ShareKit/ShareKit.git
If you want to reuse this local git directory instead of cloning again from
git://github.com/ShareKit/ShareKit.git
use the '--force' option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the '--name' option.
而且我不确定该怎么做。我对git很新,我需要在我的项目中得到这个 - 有没有办法只是擦除项目中的所有git并从头开始?我只是用一个新项目做到这一点,但除此之外它已经非常完整,从头开始并将所有内容复制完毕将非常耗时。我让ShareKit在测试应用程序中工作,安装正确,有什么理由我不能将该文件夹中的所有ShareKit文件复制到我需要的文件夹中吗?
编辑:我试过了
git submodule deinit Submodules/ShareKit
这给了我这个错误:
error: pathspec 'Submodules/ShareKit' did not match any file(s) known to git.
Did you forget to 'git add'?
它似乎陷入某种奇怪的状态,它坚持子模块同时存在和不存在。我正在使用Terminal将子模块添加到Xcode项目中,只是为了澄清。
答案 0 :(得分:11)
尝试以下操作强制git重新添加子模块:
git submodule add --force git://github.com/ShareKit/ShareKit.git Submodules/ShareKit
注意添加后的--force。
如果您想完全删除版本处理,只需删除.git和.gitmodules。
答案 1 :(得分:3)
iveqy的评论为我做了诀窍,将其作为答案发布,以便更加明显。
只需删除以下文件夹(使用子模块的路径进行调整):
.git/modules/Submodules/ShareKit
您可以在unix下使用rm path -rf
删除它,或者为了安全起见只需将其移至/tmp
(它应该在下次启动时删除,但如果您删除了它,则会让您有时间改变主意错误的文件夹):
mv .git/modules/Submodules/ShareKit /tmp/ShareKit-deleted