为什么我不能在删除它后添加一个git子模块

时间:2014-01-07 00:29:11

标签: git git-submodules

我尝试删除一个子模块,然后用git 1.8.5.2添加它。 asub添加了子模块git submodule add -b master url_asub.git。 我通过

删除了子模块
git rm asub

asub目录消失了。然后我尝试使用添加它的原始命令再次添加它(以测试1.8.5.2中的子模块删除是否干净):

git submodule add -b master url_asub.git

我收到错误消息:

A git directory for 'asub' is found locally with remote(s): 
   origin url_asub.git
If you want to reuse this local git directory instead of cloning again from
   url_asub.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 submodule sync,并尝试了

git submodule deinit asub
git rm asub
git submodule add -b master url_asub.git

但我仍然无法添加子模块。我错过了什么,或者这是git 1.8.5.2中的一个错误?

我想这样做的原因是:a)删除一个子模块,然后b)将其添加回来,以便它反映子模块的最新内容。这可能听起来很幼稚,但我发现克隆超级项目how to keep git submodule on-branch status after cloning superproject?)后submodule add -b功能会中断。因此,我认为可能是一种简单的方法来避免保持子模块跟踪其主分支的所有麻烦是删除子模块并在每次克隆超级项目时将其添加回来。

2 个答案:

答案 0 :(得分:3)

经过一番骚动,我发现

之后
git submodule add -b master url_asub.git
git rm asub

需要第三步:

rm -f .git/modules/asub

显示错误消息,因为.git / modules / asub保留在git rm之后,并在删除子目录后消失。现在可以以我喜欢的方式添加子模块asub

答案 1 :(得分:1)

如果你所做的只是删除文件,那么git submodule update应该再将它们拉下来。