说我有一个项目,该项目具有使用git submodule
实现的依赖项。现在,我正在进行更改,不再需要这种依赖关系。我要提交如下更改:
换句话说,我确实不要按照How do I remove a submodule?的答案删除子模块。实际上,我写这个问题是为了澄清这个问题。[1]
我有空的时候会尝试一些实验。它可能很简单,例如git submodule deinit
和/或从.gitsubmodules
中删除其条目。我搜索了Stack Overflow,没有发现专门针对这种情况的问题或答案。甚至连精湛的Mastering Git submodules都不清楚。
[1]:这些答案中需要执行的许多步骤告诉我,这种消除不是“正常的”,否则git会包含一个瓷器命令来为您完成所有操作。相反,git deinit
的行为非常狭窄。我认为这是故意的。
答案 0 :(得分:1)
git submodule deinit
that I documented in 2013及其关联的rm -rf .git/modules/a/submodule
都假定已将删除的子模块推入。
最初将子模块引入为只读,以便将其他存储库内容带入您的存储库,而无意修改它们。
differs from subtree,更自然地希望进行修改。
话虽这么说,是的,如果您在未提交/推动该子模块的本地更改的情况下删除了一个子模块,则最终结果将不令人满意。
可能的补丁想法是,当git submodule deinit命令检测到子模块当前HEAD与自身内部的远程跟踪分支(例如其自身的origin/master
)不匹配时,阻止/失败