【问题标题】:git submodule add fatal: Not a Git Repositorygit submodule add fatal:不是 Git 存储库
【发布时间】:2012-04-20 09:13:21
【问题描述】:

我对 Git 还很陌生,尽我所能找到一些关于这个问题的文档,但无济于事。

这是我的命令:

$ git submodule add https://github.com/joliver/EventStore.git externalsource/JOliverEventStore/ 

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

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

如果我像这样将子模块添加到根目录:

$ git submodule add https://github.com/joliver/EventStore.git JOliverEventStore 

我没有问题,它会在根目录中创建文件夹。

任何见解将不胜感激。

【问题讨论】:

  • 您是否尝试过创建externalsource 目录,然后 cd'ing 到它并添加子模块?
  • 我做了,当添加一个子模块时,你必须从根目录这样做是错误返回
  • 原始命令中JOliverEventStore 的末尾有一个斜杠。也许 git 太笨了,以至于你想结帐到目录JOliverEventStore(不存在)下面的JOliverEventStore

标签: git git-submodules


【解决方案1】:

这可能取决于您使用的 Git 版本:recent thread (February 2012) 提到了一个错误:

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

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

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

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

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

eoinoc 提到in the comments 的另一个原因,在问题“git status returns fatal: Not a git repository but .git exists and HEAD has proper permissions”中有详细说明。

我的 repo 的位置已经改变,我需要更新 git 的配置文件。

【讨论】:

  • 谢谢冯克。我也看过那篇文章。更新是按顺序进行的。我没有看到它是否在上一个版本中得到解决。这似乎是一个常见的任务,我很惊讶地看到这个问题
  • 从 git 1.6.x(Mountain Lion 包含)升级到 1.8.1 解决了这个问题。
  • 这个错误并不是我看到相同错误消息的原因。我的 repo 的位置已经改变,我需要更新 git 的配置文件:stackoverflow.com/questions/10144149/…
  • @eoinoc 很高兴知道。我已将您的评论包含在答案中以提高知名度。
【解决方案2】:

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

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

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

【讨论】:

  • 我现在感觉自己像个真正的业余爱好者,只是在这上面浪费了 10 分钟。非常感谢!
【解决方案3】:

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

第一个git init

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

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 2015-12-22
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    • 2016-09-30
    相关资源
    最近更新 更多