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的配置文件.
这看起来很愚蠢,但因为我只是在那个愚蠢的错误上浪费了 30 分钟......
您的父存储库必须已创建为 git 存储库。我刚刚创建了父模块,然后创建了子模块并尝试git submodule add
进入父模块。但是,父级尚未初始化为 git 存储库。
这导致了与您提到的错误相同的错误(“不是 git 存储库”)。然而,它的父级不是 git 存储库......愚蠢。
小智 5
我为了一个简单的问题浪费了几分钟
第一的git init
然后安装主题git submodule add https://github.com/joliver/EventStore.git JOliverEventStore