首页 > 解决方案 > 运行 git submodule add 命令时获取“请确保 .gitmodules 文件在工作树中”

问题描述

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

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

git submodule add https://github.com/.../foo.git

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

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

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

我做错了什么?

编辑:我也试过。

mkdir test
cd test
git init
git submodule add https://github.com/.../foo.git

我犯了同样的错误。

标签: gitgit-submodules

解决方案


您可能失败的检查是:

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);
}

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

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

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


推荐阅读