Git 中的子模块更新

Abdul Jabbar 2022年4月22日
Git 中的子模块更新

子模块是一种将 Git 仓库作为子目录保留在当前分支中的方法。子模块通常是从第三方仓库中导入的。例如,一个大型项目可能有一个包含库的子模块。

submodule 可用于项目的任何部分。它可以有它的子模块等等,这取决于需求。它们是固定在父仓库工作目录中特定路径的父 Git 仓库中的 Git 仓库。

为了开发子模块,我们使用 git submodule init 在项目的根目录中创建一个 .gitmodules 文件,其中包含我们打算在接下来的任务中使用的子模块列表。然后,我们将使用命令 git submodule update 来拉入我们的子模块。

要更新子模块,我们应该在父仓库中指定子模块路径。要访问子模块,我们必须始终指定相对于父仓库的路径。因此,子模块路径是相对于项目的。

为了避免需要指定子模块路径,我们可以在 gitmodules 文件中设置子模块路径。gitmodules 文件是仓库根目录中的纯文本文件。gitmodules 文件定义了当前仓库的父仓库和子模块之间的映射。

更新 Git 子模块

我们将向你展示如何使用服务器上最近的提交来更新我们工作区中的 Git 子模块。

  • 克隆远程仓库,如果我们还没有的话。
  • 发布一个 git 子模块更新 -remote 命令。
  • 列出从仓库拉到 Git 索引的任何新文件。
  • 执行 git 提交。
  • 推回原点。

git submodule 命令有一个名为 --update 的参数,可用于从子模块获取最新代码。

git submodule --update 
SomeSubmodule $ git submodule --sync
SomeSubmodule $ git submodule update --init 

我们可以使用 update 参数将子模块更新为最新的提交。为了避免大量复杂的检出和推送命令,为子模块更新命令创建一个快速别名要简单得多。

git submodule update --remote --merge

上述命令更新所有子模块,确保工作树干净并与远程分支同步。为避免每次都获得合并提交,请使用 -merge 标志来合并更新。使用 Git submodules 就像一把双刃剑,因为它可以让我们的开发生活变得更轻松,但如果我们不知道它是如何工作的,它也会让我们的生活变得更艰难。我们使用它的次数越多,我们就越了解它们的工作原理,从而能够利用它们来发挥我们的优势。

作者: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

相关文章 - Git Submodule