我有一个目录树,其中包含一个git存储库(我当时没有想到)。然后在父亲2 dirs,我做了一个git init
,并试图添加所有的树。它没有在已经有.git
目录的子目录中添加文件,但我仍然没有注意到这一点,只是添加了这个目录。(我不确定我到底打了什么,但当时我觉得一切都完成了,尽管我仍然有点好奇,为什么顶部的添加没有添加所有内容;但后来我打消了这个念头
现在我注意到克隆外部存储库不会检出内部存储库中的文件。经过一番调查,我发现内部存储库似乎是外部存储库的一个子模块,但不知何故不是一个合适的子模块。
像git submodule
或git status
或git log
这样的东西从来没有提到内部存储库,但试图将文件从内部存储库添加到外部存储库总是状态:fatal: Path 'path/to/innerRepository/somefile' is in submodule 'path/to/innerRepository'
,即使我删除了内部.git
目录。
我现在想要实现的是摆脱内部存储库的目录(及其所有内容)是另一个存储库的一部分的信息。我想忘掉旧的存储库,把文件签入新的存储库。
我该怎么做呢?
删除内部的。git文件夹并不足以让上级repo相信某个路径不是子模块。
path/to/innerRepository
可能在父repo的索引中记录为特殊条目(模式为160000)
试
git submodule deinit path/to/innerRepository
(它应该失败,如果你没有。gitmodules)
:
git rm --cached path/to/innerRepository # no trailing slash
最后一个命令应该让你的父repo"忘记"这个子模块。