当前位置: 首页 > 知识库问答 >
问题:

将公共代码添加为git子模块时出现问题:“索引中已存在”

戚阳曜
2023-03-14

我是新来的git,并希望帮助添加子模块。我收到了两个共享一些公共代码的项目。共享代码只是被复制到两个项目中。我为公共代码创建了一个单独的git repo,并将其从项目中删除,计划将其添加为git子模块。

我使用git子模块add的路径选项来指定文件夹:

git submodule add url_to_repo projectfolder

但是后来得到了错误:

'projectfolder' already exists in the index"

这是我的存储库所需的结构:

repo
|-- projectfolder
    |-- folder with common code

可以直接将git子模块添加到repo中,或者添加到那里的新文件夹中,但不能添加到项目文件夹中。问题是它确实需要在项目文件夹中。.对此我能做些什么,我对git子模块add的路径选项有什么误解?

共有3个答案

冯飞鹏
2023-03-14

手动删除子模块涉及许多步骤,这对我很有效。

假设你在项目根目录和示例git模块名称为"c3-pro-ios-框架"

删除关联到子模块的文件

rm -rf .git/modules/c3-pro-ios-framework/

删除配置中对子模块的任何引用

vim .git/config

删除. git模块

rm -rf .gitmodules

在没有"git"的情况下从缓存中删除它

git rm --cached c3-pro-ios-framework

添加子模块

git submodule add https://github.com/chb/c3-pro-ios-framework.git
公孙茂学
2023-03-14

首先,您需要删除git路径的子模块git存储库(在本例中为项目文件夹)。

rm -rf projectfolder

git rm -r projectfolder

然后添加子模块

git submodule add <git_submodule_repository> projectfolder
何兴邦
2023-03-14

恐怕你的问题中没有足够的信息来确定发生了什么,因为你还没有回答我的后续问题,但无论如何这可能会有所帮助。

该错误意味着projectfolder已暂存(“已存在于索引中”)。要了解此处的情况,请尝试列出该文件夹下索引中的所有内容,包括:

git ls-files --stage projectfolder

该输出的第一列将告诉您projectfolder索引中的对象类型。(这些看起来像Unix文件模式,但在git中有特殊的含义。)

我怀疑你会看到这样的东西:

160000 d00cf29f23627fc54eb992dde6a79112677cd86c 0   projectfolder

(即以160000开头的一行),在这种情况下,project ect文件夹中的存储库已经被添加为gitlink。如果它没有出现在git子模块的输出中,并且您想将其重新添加为子模块,您可以执行以下操作:

git rm --cached projectfolder

...取消舞台,然后:

git submodule add url_to_repo projectfolder

...添加存储库作为子模块。

然而,您也可能会看到列出了许多Blob(具有文件模式100644100755),这将向我表明,在将新存储库复制到适当位置之前,您没有正确地取消Project文件夹中的文件...如果是这种情况,您可以执行以下操作来取消所有这些文件:

git rm -r --cached projectfolder

... 然后添加具有以下内容的子模块:

git submodule add url_to_repo projectfolder
 类似资料:
  • 我添加一个子节点到树视图中的当前父节点。但我的问题是,它将新节点添加到当前父节点的末尾,而不是添加在为true)的位置。 这是我的代码: 当然,、、和都是我的代码中的变量,对于任何for循环,它们都是不同的整数和字符串是树视图节点的名称,是固定字符串循环查找整个树,如果有与给定字符串相等的节点,则保留该节点,否则在树中插入一个空节点,然后递归执行。但为了简单起见,让我们:

  • 我是新来的反应。所以请原谅我的天真。我有以下一段反应代码: 我需要在类中转换上面的代码并将其导出:我编写了下面的代码 但是,因为这是一个容器类,所以我不希望在我的this组件类中使用“document..getElementById(“容器”)。我的index.js已经有了 请帮帮我。

  • 我正在尝试在我的项目中导入cSipSimple库以实现sip功能,在尝试导入文件时,我采用了通常的导入方式,即: 尽管如此,在同步gradle时,我还是再次得到了一个错误列表: 这是我第一次尝试导入项目并在中用作模块。所以无法找到确切的问题。如果我遗漏了什么,请一定告诉我。提前谢谢。

  • 问题内容: 我得到以下代码的异常。但是不明白为什么。 我可以使它起作用,但是我试图理解这些概念,因此我将声明更改为以下内容,但也没有起作用。 问题答案: ArrayList索引从0开始(零) 您的数组列表大小为0,并且要在第一个索引处添加String元素。如果不在第0个索引处添加元素,则无法添加下一个索引位置。错了 因此,只需使其成为 或者你可以

  • 我在Tensorflow中实现了我的第一个CNN,在将密集层添加到我的CNN模型时遇到了麻烦。下面是代码: 我得到以下输出。后来,我的程序崩溃了。什么东西需要这么多内存?这似乎是致密层,但我无法解释。

  • 问题内容: 这个问题似乎与在Couchbase中使用XDCR有关。如果我有以下简单对象 并设置一个Elasticsearch索引 然后,我可以使用REST API将两个对象添加到该索引中 它们现在都可以搜索(尽管“年龄”是一个人和另一个人的事实。 但是,如果我将这两个对象存储在一个沙发基存储桶中(而不是直接存储到elasticsearch中)并设置了XDCR,则第一个对象可以很好地复制,但是第二个