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 会产生 S。 R 根本不包含 S:R 只包含说明。
按照说明进行操作后,存储库 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 作为子模块存在时你会看到的症状。
好吧,这会有点混乱,但请耐心等待。还在习惯 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."
中检查提交 Cdirections/instructions只是一个文本文件。它们存储在名为 .gitmodules
的文件中;当您克隆 R 并使用 git submodule init
时,Git 会读取文件并尝试按照说明克隆 S。如果 .gitmodules
中的指令是正确的,that 会产生 S。 R 根本不包含 S:R 只包含说明。
按照说明进行操作后,存储库 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 作为子模块存在时你会看到的症状。