当运行git子模块添加命令时,得到 "请确保.gitmodules文件在工作树中"。

问题描述 投票:0回答:1

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

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

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

从cWorkGitHubroot(主站)出发。

但我一直收到 "请确保.gitmodules文件在工作树中"。

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

我到底做错了什么?

EDIT:我也试过了。

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

我也得到了同样的错误。

git git-submodules
1个回答
2
投票

检查你可能失败的是:

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 (或类似的)将现有的文件恢复到你的工作目录中。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.