2

我的超级项目有两个分支 - masterdev。我最初在这两个分支中都有一个子模块,但现在我只需要将它保留在dev分支中。为此,我切换到分支并从那里删除它(按照此处概述的说明)。现在每次我从dev分支切换到master分支时,我都会收到一条消息,警告:无法 rmdir path/to/submodule: Directory not empty。此外,每次我git statusmaster分支中执行操作时,git 都会在 Untracked files 下列出子模块。

有没有办法告诉 git 不要抱怨这个子模块?我尝试.gitignore在主分支中添加子模块路径,但这似乎没有帮助。另外,我很好奇为什么当一个文件夹存在于一个分支而不是另一个分支时git不会抱怨,但是当一个分支存在于一个分支而不是另一个分支时它会抱怨?

编辑:删除子模块时我没有从.git/config文件中删除相关部分,因为我仍然希望它在 dev 分支中。

4

1 回答 1

1

您有关于如何在此答案中删除子模块的更完整说明:

大多数尝试删除子模块的用户绊倒的一点是:

git rm --cached path_to_submodule (no trailing slash)

那是因为他们通常删除(简单的操作系统rm命令,而不是git rm命令)子模块的路径,这意味着它不再可见。
然而,它仍然记录在索引中。


如果您只需要删除一个分支中的子模块(并将其保留在另一个分支中),那么您需要:

  • 不修改.git/config:这是所有 repos(及其所有分支)使用的本地配置:所以git submodule deinit这里没有(只清理.git有关子模块的内容)。
  • 删除子模块条目:
    • .gitmodules文件(您可以在不同的分支中拥有该文件的不同内容)
    • 索引:(git rm --cached path_to_submodule没有尾部斜杠):再次是您仅在一个分支中进行的修改。
于 2013-06-22T07:26:42.283 回答