如何"解决致命:不是git存储库"?

cor*_*iOS 27 git git-submodules

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

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

之后我就遇到了这个问题

致命的:不是git存储库

Shi*_*ndi 31

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

{submodule}/.git
.git/modules/{submodule}/config
Run Code Online (Sandbox Code Playgroud)

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

更新:

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

git config -f .gitmodules --remove-section "submodule.submodule_name"
Run Code Online (Sandbox Code Playgroud)

2.)阶段.gitmodules更改

git add .gitmodules
Run Code Online (Sandbox Code Playgroud)

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

git submodule deinit -f "submodule_name"
Run Code Online (Sandbox Code Playgroud)

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

git rm --cached path_to_submodule
Run Code Online (Sandbox Code Playgroud)

5.)清理.git/modules:

rm -rf .git/modules/path_to_submodule
Run Code Online (Sandbox Code Playgroud)

6.)承诺:

git commit -m "Removed submodule <name>"
Run Code Online (Sandbox Code Playgroud)

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

rm -rf path_to_submodule
Run Code Online (Sandbox Code Playgroud)


kik*_*que 12

我刚刚遇到这个问题。

就我而言,这是由于具有不同子模块的签出分支造成的。

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

由于某种原因,它们无法通过以下方式初始化:

git submodule update --recursive --init

在更新正常工作之前,我需要手动删除此文件/目录。

{submodule-path}/.git
.git/modules/{submodule}/config
Run Code Online (Sandbox Code Playgroud)

  • 删除 &lt;submodule-path&gt;/.git 文件为我解决了这个问题 (2认同)

Jas*_*aat 11

我遇到了这个并且.git/modules在我的主存储库中没有目录。我有一个子模块“build”,所以只需删除所有引用并重新初始化它:

rm -rf .git/modules
rm -rf build
git submodule init
git submodule update
Run Code Online (Sandbox Code Playgroud)


Ale*_*son 5

我将git存储库移到另一个文件夹后遇到了此错误。当我查看时:

{submodule}/.git
Run Code Online (Sandbox Code Playgroud)

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

gitdir: /Users/ajx/Documents/repo/.git/modules/{submodule}
Run Code Online (Sandbox Code Playgroud)

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

gitdir: ../../.git/modules/{submodule}
Run Code Online (Sandbox Code Playgroud)

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