我试图从我的仓库中删除子模块。这是我用来删除回购的步骤:
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
你们中的任何人都知道为什么或如何删除子模块?
我非常感谢你的帮助。
答案 0 :(得分:3)
您可能需要先取消注册子模块。
git submodule deinit <path_to_submodule>
答案 1 :(得分:0)
删除子模块(deinit)可能还不够。
在Git 2.25.2(2020年3月)之前,如果git rm
仅是缓存脏文件,则在子模块上运行“ .gitmodules
”(或取消初始化)不必要地失败了。
请参见commit 7edee32的David 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
。