git submodule add fatal:不是Git Repository

Bra*_*tti 8 git git-submodules

我是Git的新手,并尽我所能找到关于这个问题的一些文档无济于事.

这是我的命令:

$ git submodule add https://github.com/joliver/EventStore.git externalsource/JOliverEventStore/ 
Run Code Online (Sandbox Code Playgroud)

致命:不是git存储库:../.git/modules/externalsource/JOliverEventStore无法签出子模块'externalsource/JOliverEventStore'

我在我的回购根目录中,目前没有目录/externalsource/JO liverEventStore/.错误是谈论我不知道的目录.

如果我将子模块添加到根目录,如下所示:

$ git submodule add https://github.com/joliver/EventStore.git JOliverEventStore 
Run Code Online (Sandbox Code Playgroud)

我没有问题,它在根目录中创建了该文件夹.

任何见解将不胜感激.

Von*_*onC 11

它可能取决于您使用的Git版本:最近的帖子(2012年2月)提到了一个错误:

最近,一个名为的子模块在超级项目的<name>目录中有git目录,.git/modules/<name>而工作树包含gitfile指向那里的子目录.

当在到目前为止不存在的分支上添加相同的子模块时(在.gitmodules文件中找不到该子模块),该名称不会从路径中初始化.
这导致在找到目录gitfile时输入错误的路径.git/modules/<name>,因为这很愉快地使用 - now empty - name.
然后它始终只指向一个目录,即使我们在目录层次结构中有更深的路径.

但更一般地说,使用以下<path>参数git submodule:

<path> 是克隆子模块在超级项目中存在的相对位置.

  • 如果<path>不存在,则通过从命名URL克隆来创建子模块.
  • 如果<path>确实存在并且已经是有效的git存储库,那么这将被添加到变更集而不进行克隆.
    提供第二种形式是为了便于从头开始创建新的子模块,并假设用户稍后将子模块推送到给定的URL.

eoinoc 在评论中提到另一个原因,详见" git status回报fatal: Not a git repository but .git exists and HEAD has proper permissions " 问题.

我的repo的位置发生了变化,我需要更新git的配置文件.

  • 该错误不是我看到相同错误消息的原因。我的 repo 的位置发生了变化,我需要更新 git 的配置文件:http://stackoverflow.com/questions/10144149/git-status-returns-fatal-not-a-git-repository-but-git-exists-and -head-has-prop (2认同)

Fra*_*y_V 9

这看起来很愚蠢,但因为我只是在那个愚蠢的错误上浪费了 30 分钟......

您的父存储库必须已创建为 git 存储库。我刚刚创建了父模块,然后创建了子模块并尝试git submodule add进入父模块。但是,父级尚未初始化为 git 存储库。

这导致了与您提到的错误相同的错误(“不是 git 存储库”)。然而,它的父级不是 git 存储库......愚蠢。


小智 5

我为了一个简单的问题浪费了几分钟

第一的git init

然后安装主题git submodule add https://github.com/joliver/EventStore.git JOliverEventStore