提问人:Saif eldeen Adel 提问时间:4/29/2021 更新时间:4/29/2021 访问量:6832
Git - “<directory> does not have have commit check out”,即使在删除该目录中的 .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 应用程序目录。Idk 如何修复它,所以我只修复其他两个,确保我在该应用程序目录中没有 git 存储库,然后我终于.git add *
安恩德。错误。
error: 'frontend/financee-app' does not have a commit checked out
fatal: updating files failed
到处搜索这个错误,每个人都在说要删除内部 git 存储库。但我已经做到了。它是否检测到我第一次错误地推送了导致所有这些问题的那个?如果我想永远摆脱它怎么办。我只想提交这个里面没有 git 存储库的新文件夹。我发誓这就是我想做的一切。为什么这么难。
答:
所以很自然地,我无法在 github 上打开那个 react 应用程序文件夹,因为从我学到的到现在,它现在是一个“子模块”吗?
没错。
这意味着 git 存储库中有一个 git 存储库。
那是。。。不太对。Git 不能在存储库中保存存储库——或者在这里可能不是一个更好的词,因为原因只是部分技术原因——所以子模块不是存储库中的存储库,而是对存储库内某个存储库的引用。也就是说,如果我们将外部 Git 存储库指定为 R(存储库),将内部存储库指定为 S(子模块),那么 R 包含的不是 S 本身,而是一些指示或指令:“找到 S 并克隆它。然后,在 S 中查看提交 C。
说明/说明只是一个文本文件。它们存储在名为 ;当您克隆 R 并使用 时,Git 会读取文件并尝试按照说明克隆 S。如果中的说明正确,则产生 S。R 根本不包含 S:R 只有指令。 .gitmodules
git submodule init
.gitmodules
按照说明进行操作后,存储库 R 的设置和提交现在具有记录 S 子模块性的信息,这就是问题所在。
为了阻止 R 认为 S 是一个子模块,你必须告诉 Git 它不是。有一个非常大的(而且很旧,2009 年 8 月)的 StackOverflow 问题和答案:如何删除子模块?这个过程曾经很糟糕,但自 2009 年以来已经得到改进。请参阅 VonC 接受的答案。
error: 'frontend/financee-app' does not have a commit checked out fatal: updating files failed
当 R 仍然认为 S 作为子模块存在时,您将看到这种症状。
评论
.gitmodules
git submodule deinit
rm -rf .git/modules/a/submodule
a/submodule
frontend/financee-app
rm
-f
git rm -f a/submodule
frontend/financee-app
评论