为什么删除 git 子模块后无法重新添加它

tho*_*hor 5 git git-submodules

我尝试删除一个子模块,然后使用 git 1.8.5.2 将其添加回来。asub添加了一个子模块git submodule add -b master url_asub.git。我删除了子模块

git rm asub
Run Code Online (Sandbox Code Playgroud)

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

git submodule add -b master url_asub.git
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

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.
Run Code Online (Sandbox Code Playgroud)

我不确定这个错误消息是什么意思。我也尝试过git submodule sync在超级项目中做,并尝试过

git submodule deinit asub
git rm asub
git submodule add -b master url_asub.git
Run Code Online (Sandbox Code Playgroud)

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

我想要这样做的原因是 a) 删除子模块并 b) 将其添加回来,以便它反映子模块的最新内容。submodule add -b这可能听起来很天真,但我发现一旦克隆超级项目,该功能就会中断(如何在克隆超级项目后保持 git 子模块在分支上的状态?)。因此,我认为避免子模块跟踪其主分支的所有麻烦的一个简单方法可能是删除子模块并在每次克隆超级项目时将其添加回来。

tho*_*hor 5

经过一些 grep 后,我发现之后

git submodule add -b master url_asub.git
git rm asub
Run Code Online (Sandbox Code Playgroud)

需要第三步:

rm -f .git/modules/asub
Run Code Online (Sandbox Code Playgroud)

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