Git:删除子模块错误

时间:2017-05-04 17:20:14

标签: git github git-submodules

我试图从我的仓库中删除子模块。这是我用来删除回购的步骤:

Delete the relevant section from the .gitmodules file.
Stage the .gitmodules changes git add .gitmodules
Delete the relevant section from .git/config.
Run git rm --cached path_to_submodule 

但是当我运行此命令git rm --cached path_to_submodule时,我收到此错误:

fatal: Please stage your changes to .gitmodules or stash them to proceed

如果跑git status我收到此消息:

fatal: Not a git repository:path to submodule

你们中的任何人都知道为什么或如何删除子模块?

我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:3)

您可能需要先取消注册子模块。

git submodule deinit <path_to_submodule>  

答案 1 :(得分:0)

删除子模块(deinit)可能还不够。

在Git 2.25.2(2020年3月)之前,如果git rm仅是缓存脏文件,则在子模块上运行“ .gitmodules”(或取消初始化)不必要地失败了。

请参见commit 7edee32David Turner (csusbdt)(2020年1月27日)。
(由Junio C Hamano -- gitster --commit a74c387中合并,2020年2月12日)

git rm submodule:如果.gitmodules索引统计信息为零,则成功

签名人:David Turner
报告人:托马斯·贝托斯(ThomasBétous)

错误是ie_match_stat()用于比较文件的统计信息是否与索引中的统计信息兼容,而不是使用ie_modified()来检查文件是否与索引中的版本。

此版本(用deinit代替rm的版本是reported here

$ git submodule deinit Submodule1
fatal: Please stage your changes to .gitmodules or stash them to proceed
Submodule work tree 'Submodule1' contains local modifications; use
'-f' to discard them

在这种情况下,用户的clone命令似乎使索引的统计信息为空。

邮件列表无法复制。
但是我们(两个西格码)在使用一些管道命令时遇到了该错误,因此我正在修复它。

在这种情况下,我手动确认此修复程序也可以修复deinit