为什么git rm -rf没有删除包含子模块的文件夹?

时间:2014-02-15 19:49:31

标签: git

当我git status时,这就是我所看到的:

$ git status
# On branch master
# Your branch is ahead of 'github/master' by 1 commit.
#   (use "git push" to publish your local commits)
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   octopress (modified content, untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

当我git rm -rf octopress时,这就是我所看到的:

$ git rm -rf octopress
error: submodule 'octopress' (or one of its nested submodules) uses a .git directory
(use 'rm -rf' if you really want to remove it including all of its history)

思想?

2 个答案:

答案 0 :(得分:4)

此错误消息也让我感到困惑,但它试图说的是您应该使用rm -rf git rm -rf

(use 'rm -rf' if you really want to remove it including all of its history)

所以,你应该能够做到这一点:

$ rm -rf octopress
$ git rm octopress

答案 1 :(得分:0)

如果你明显地从git status获得干净的输出,你可以简单地,

git status --ignore-submodules

否则你需要明确处理子模块。在我们处理子模块之前,请注意git子模块不应该有.git目录 1 。你可以使用旧版本的git吗?

继续前进。 Git告诉你它是octopress子模块,

#   modified:   octopress (modified content, untracked content)

要解决此问题,您需要进入octopress子模块和

  • 重置或提交修改后的内容
  • 提交,删除或.gitignore未跟踪的内容

或者,使用更大的锤子,正如您在问题中建议的那样,您可以删除子模块的本地结帐,

$ git submodule deinit --force octopress

适用于git 1.8.3及以后

当指定--force时,子模块的工作树即使包含本地修改也将被删除。

git rm octopress执行此操作以从存储库中删除子模块。


<子> 1 看看这个补丁,

  

将子模块的git-dir移动到$ GIT_DIR / modules / [name_of_submodule] of   超级项目。这是朝着能够删除子模块迈出的一步   目录没有丢失.git目录中的信息   因为它现在存储在子模块工作树之外。   
  http://git.661346.n2.nabble.com/PATCH-v5-0-2-submodule-move-gitdir-into-superproject-td6692559.html