在 Git 中删除子模块

Azhar Bashir Khan 2022年4月22日
在 Git 中删除子模块

本教程演示了如何在 git 中删除子模块。

在开发软件项目时,我们经常会用到我们项目所需的外部框架和库。这些框架和库可能是开源的并保存在 git 仓库中。

我们可能希望将这些外部库的源代码保留在 git 仓库的项目目录中。git 的子模块功能允许我们将这些外部源(它们是单独的 Git 仓库)作为子目录保留在我们的项目 Git 仓库中。

然后我们可能会决定删除这些 Git 子模块,因为它们可能不再与我们的项目相关。

我们现在将用一个例子来解释它。

在 Git 中删除子模块

在处理软件项目时,我们经常需要使用库的外部资源。外部库可能由第三方或不同团队开发。

可以在单独的 Git 仓库中跟踪此类外部库。

我们可以使用 Git 的子模块功能,将这样的外部 Git 仓库合并为我们项目 Git 仓库的子目录。因此,我们可以将另一个仓库克隆到我们的项目中,并保持每个单独的提交。

通常,我们可能会替换或删除此类外部库。我们可能会觉得我们的项目不再需要这样一个外部库。

因此,我们决定从我们的项目 Git 仓库中删除外部库。为此,我们需要删除外部库的 Git 子模块。

假设我们的项目 Git 仓库中有一个子模块 good-ext-lib。我们现在希望从 Git 仓库和文件系统中删除子模块 good-ext-lib

我们需要按如下方式运行 Git 命令来删除子模块。

$ git submodule deinit -f path/to/good-ext-lib

$ rm -rf .git/modules/path/to/good-ext-lib

$ git rm -f path/to/good-ext-lib

命令 git submodule deninit 取消注册子模块 good-ext-lib。它从 git/config 文件中删除整个 submodule.$name 部分。此外,它还删除了子模块的工作树。

.git 文件夹中带有 good-ext-lib 子模块路径的命令 rm -rf 从我们项目的 .git/modules 目录中删除子模块目录。

项目目录中带有 good-ext-lib 子模块路径的命令 git rm 删除了超级项目(我们的项目)的跟踪数据。它删除了 gitlink 条目。此外,它消除了 .gitmodules 文件中存在的子模块部分并暂存该文件。

最后,我们需要提交删除 good-ext-lib 子模块,如下所示。

$ git commit -m "removed submodule good-ext-lib"

因此,现在我们已经从 Git 的项目目录中删除了 good-ext-lib 子模块。

因此,我们展示了如何在 Git 中删除子模块。

欲了解更多信息,请访问 -

  1. git 子模块
  2. Git 子模块教程

相关文章 - Git Submodule