Git - “<directory> 没有检出提交”,即使在删除该目录中的 .git 之后也是如此。无法摆脱内部 git 回购

Git - "<directory> does not have a commit checked out" even after deleting the .git inside that directory. Cant get rid of inner git repo

好吧,这会有点混乱,但请耐心等待。还在习惯 git 并且我在挣扎。所以。事件的顺序如下(很忙所以总结)

我有一个包含后端和前端的项目。前端目录有一个 React 应用程序 (frontend/financee-app/),默认情况下它有一个 .git 初始化。

但是我愚蠢的自己在为整个项目初始化 git 回购并提交和推送我的代码之前忘记删除那个内部回购。

所以很自然地,我无法打开 github 上的那个 React 应用程序文件夹,因为根据我到目前为止的了解,它现在是一个“子模块”?这意味着 git 回购中有一个 git 回购。

但经过如此多的努力和弄乱我的文件后,我用我拥有的备份文件替换了我的文件,这些备份文件与我最初提交的文件结构几乎相同。但是我确保这次 React 应用程序中没有内部 git 回购协议。

所以我 git 提取我的代码以查看不同之处,它告诉我存在三个冲突。两个文件中的两个。我修的,没问题。第三个冲突是该死的 React 应用程序目录。我不知道如何修复它,所以我只修复了另外两个,确保我在该应用程序目录中没有 git 回购协议,然后我终于 git add *.

安。一个错误。

error: 'frontend/financee-app' does not have a commit checked out
fatal: updating files failed

到处搜索那个错误,每个人都说要删除内部 git 仓库。但我已经做到了。是否检测到我第一次错误地推动了导致所有这些问题的那个?如果我想永远摆脱它怎么办。我只想提交这个没有 git 存储库的新文件夹。我发誓这就是我想要做的。为什么这么难。

So naturally, i couldnt open that react app folder on github cuz from what i learned till now is that its now a "submodule"?

没错。

Which means theres a git repo within a git repo.

那是……不太正确。 Git 不能 在一个存储库中保存一个存储库——或者 不会 在这里是一个更好的词,原因是只是部分技术 - 所以子模块不是存储库中的 repository,而是存储库中对 某个存储库的 引用。也就是说,如果我们将外部 Git 存储库指定为 R (repo),将内部存储库指定为 S (子模块), R 包含的不是 S 本身,而是一些指示或说明:“去寻找 S 和克隆它。然后,在 S."

中检查提交 C

directions/instructions只是一个文本文件。它们存储在名为 .gitmodules 的文件中;当您克隆 R 并使用 git submodule init 时,Git 会读取文件并尝试按照说明克隆 S。如果 .gitmodules 中的指令是正确的,that 会产生 SR 根本不包含 SR 只包含说明。

按照说明进行操作后,存储库 R 的设置和提交现在有记录 S 子模块的信息,这就是问题所在。

要阻止 R 认为 S 是子模块,您必须告诉 Git 它不是。有一个非常大的(旧的,2009 年 8 月)Whosebug 问题和答案:How do I remove a submodule? The process used to be bad, but has been improved since 2009. See VonC's accepted answer.

error: 'frontend/financee-app' does not have a commit checked out
fatal: updating files failed

这是当 R 仍然认为 S 作为子模块存在时你会看到的症状。