运行 git submodule add 命令时获取“请确保 .gitmodules 文件在工作树中”

Mag*_*pie 9 git git-submodules

我是 git 新手,目前正在考虑从 mercurial 移植一些大型项目。我们有一个根项目,它只包含对所有外部项目(git 中的子模块)的引用。我正在尝试在 git 中重新创建它。

我已经将一个项目 (foo) 导入到 gitib 中。我创建了一个新的空项目(root)并将其克隆到本地。我想使用添加 Foo 作为子模块

git submodule add https://github.com/.../foo.git
Run Code Online (Sandbox Code Playgroud)

来自 /c/Work/GitHub/root (master)

但我不断收到“请确保 .gitmodules 文件在工作树中”。

查看文档,此命令的第一次运行应创建 .gitmodules 文件,但即使我手动创建它也会收到此错误。在谷歌上寻找这个错误只会返回带有错误的源文件,但没有解释为什么我会得到它。我认为这只是我对 git 的了解不足。

我做错了什么?

编辑:我也试过。

mkdir test
cd test
git init
git submodule add https://github.com/.../foo.git
Run Code Online (Sandbox Code Playgroud)

我犯了同样的错误。

Joe*_*Joe 10

您可能失败的检查是:

int is_writing_gitmodules_ok(void)
{
        struct object_id oid;
        return file_exists(GITMODULES_FILE) ||
                (get_oid(GITMODULES_INDEX, &oid) < 0 && get_oid(GITMODULES_HEAD, &oid) < 0);
}
Run Code Online (Sandbox Code Playgroud)

这意味着该文件要么存在于本地,要么不存在于暂存区或当前HEAD提交中。

您已使用git add,但随后将其从工作目录中删除。

使用git restore .gitmodules(或类似方法)将现有文件带回您的工作目录。

  • `git Restore -s HEAD .gitmodules` 将是从最新提交中检索它的命令。 (2认同)

Mag*_*pie -3

以防其他人遇到这个问题。我的 git 安装有问题。我卸载并重新安装它,错误消失了。