Git-两个不同分支中的不同子模块
我的超级项目有两个分支——master和dev。我最初在这两个分支中都有一个子模块,但现在我只需要将它保留在dev分支中。为此,我切换到主分支并将其从那里移除(按照说明)。现在,每次我从dev分支切换到master分支时,都会收到一条消息,说警告:无法rmdir path/to/submodule:Directory not empty。此外,每次我在主分支中执行Git-两个不同分支中的不同子模块,git,git-submodules,Git,Git Submodules,我的超级项目有两个分支——master和dev。我最初在这两个分支中都有一个子模块,但现在我只需要将它保留在dev分支中。为此,我切换到主分支并将其从那里移除(按照说明)。现在,每次我从dev分支切换到master分支时,都会收到一条消息,说警告:无法rmdir path/to/submodule:Directory not empty。此外,每次我在主分支中执行git status,git都会在未跟踪文件下列出子模块 有没有办法告诉git不要抱怨这个子模块?我尝试将子模块路径添加到主分支中的.
git status
,git都会在未跟踪文件下列出子模块
有没有办法告诉git不要抱怨这个子模块?我尝试将子模块路径添加到主分支中的.gitignore
,但似乎没有帮助。另外,我很好奇,为什么git不会抱怨文件夹存在于一个分支而不存在于另一个分支,而是抱怨子模块存在于一个分支而不存在于另一个分支
编辑:在删除子模块时,我没有从
.git/config
文件中删除相关部分,因为我仍然希望在开发分支中删除它。关于如何删除子模块的详细说明,请参见:
大多数试图删除子模块的用户都会遇到以下问题:
git rm --cached path_to_submodule (no trailing slash)
这是因为它们通常会删除(简单的OSrm
命令,而不是git rm
命令)子模块的路径,这意味着它不再可见。然而,它仍然被记录在索引中
如果只需要删除一个分支中的子模块(并将其保留在另一个分支中),则需要:
- 不修改
:这是所有repo(及其所有分支)使用的本地配置:因此这里没有.git/config
(这只清理git子模块deinit
中关于子模块的内容).git
- 删除以下文件中的子模块条目:
文件(您可以在不同的分支中拥有该文件的不同内容).gitmodules
- 索引:
(无尾随斜杠):同样,您只在一个分支中进行修改gitrm--cached path_to_submodule
子模块deinit
命令的描述似乎只是@VarunVats的包装。当然,我编辑了我的答案以解决您的具体问题。是的,这正是我所做的。我没有从.git/config
文件中删除子模块部分。我的问题是,每次我从dev
分支切换到master
分支时,都会收到一条警告消息:无法rmdir path/to/submodule:Directory not empty。此外,每次我在主分支中执行git status时,git都会在未跟踪文件下列出子模块。有什么方法可以删除这些消息吗?@VarunVats关于git状态,您可以添加一个.gitignore(仅在主分支中)以忽略(先前)子模块的根目录。