9

我正在尝试将 git 子模块添加到我的项目中,特别是 ShareKit。我的项目是一个 git repo,当我尝试输入

git submodule add git://github.com/ShareKit/ShareKit.git Submodules/ShareKit

进入终端我得到一个错误,说子模块已经存在。我想我不久前将它添加到这个项目中,最终没有使用它并且不正确地从项目目录中删除它(很可能只是删除了子模块文件夹)。所以我尝试去做

git rm --cached Submodules/ShareKit

根据如何删除子模块?,现在当我尝试使用第一段代码再次添加子模块时,我得到了这个:

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'?

似乎它陷入了某种奇怪的状态,它既坚持子模块同时存在又不存在。我正在使用终端将子模块添加到 Xcode 项目中,只是为了澄清。

4

2 回答 2

15

尝试以下方法强制 git 重新添加子模块:

git submodule add --force git://github.com/ShareKit/ShareKit.git Submodules/ShareKit

注意添加后的--force。

如果您想完全删除版本处理,只需删除 .git 和 .gitmodules。

于 2013-11-11T21:52:50.693 回答
5

iveqy的评论对我有用,将其作为答案发布,以便更明显。

只需删除以下文件夹(使用子模块的路径进行调整):

.git/modules/子模块/ShareKit

您可以rm path -rf在 unix 下将其删除,或者为了安全起见将其移至/tmp(下次启动时应将其删除,但如果您删除了错误的文件夹,您可以有时间改变主意):

mv .git/modules/Submodules/ShareKit /tmp/ShareKit-deleted
于 2015-03-11T17:29:08.733 回答