如何"resolve fatal: Not a git repository"?

How to "resolve fatal: Not a git repository"?

我试图从项目中删除一个子模块

已尝试 rm -rf .git/modules/submodulePath

之后我遇到了问题

严重:不是 git 存储库

这两个文件包含绝对子模块路径:

{submodule}/.git
.git/modules/{submodule}/config

因此,如果您移动了 repo,这两个文件中的绝对路径将无效,并导致 'not a git repository' 错误。只需手动修复这些文件。

更新:

1.) 从.gitmodules 文件中删除相关部分。您可以使用以下命令:

git config -f .gitmodules --remove-section "submodule.submodule_name"

2.) 暂存 .gitmodules 更改

git add .gitmodules

3.) 从.git/config中删除相关部分。您可以使用以下命令:

git submodule deinit -f "submodule_name"

4.) 删除 gitlink(没有尾部斜杠):

git rm --cached path_to_submodule

5.) 清理 .git/modules:

rm -rf .git/modules/path_to_submodule

6.) 提交:

git commit -m "Removed submodule <name>"

7.) 删除现在未跟踪的子模块文件

rm -rf path_to_submodule

您只需更新 .git 文件

nano {my submodule}/.git

使用正确的 git目录。

因为我认为您更改了文件夹的路径

我 运行 在将 git 存储库移动到另一个文件夹后出现此错误。当我查看时:

{submodule}/.git

我看到了一条带有 绝对 路径的单行,例如:

gitdir: /Users/ajx/Documents/repo/.git/modules/{submodule}

我将其更改为相对路径,例如:

gitdir: ../../.git/modules/{submodule}

我不确定为什么 git 会硬编码绝对路径...

我 运行 进入了这个,但在我的主存储库中没有 .git/modules 目录。我有一个子模块 'build',所以只需删除所有引用并重新初始化它:

rm -rf .git/modules
rm -rf build
git submodule init
git submodule update

我刚遇到这个问题。

就我而言,这是由于结帐分支具有不同的子模块。

  • 一个分支有一些子模块,但是
  • 另一个还有2个子模块。

出于某种原因,它们无法初始化:

git submodule update --recursive --init

我需要手动删除这个 files/diretories 才能正常更新。

{submodule-path}/.git
.git/modules/{submodule}/config