每次使用 Git Submodule 的时候我都会去 google,所以我会总结每个命令及其含义。

如果您已阅读本文以了解 Git 子模块的概述,请查看 Git 子模块基础知识,它们的布局非常好。

这是参考的参考。
https://git-scm.com/docs/git-submodule/2.36.0

添加

  • .gitmodules 添加一个新的子模块。
  • 默认情况下,后面描述的init也会同时执行。

命令的基本形式如下。

git submodule add <repository> [<path>]

在里面

  • .git/config注册.gitmodules写的子模块。
  • 由于它是更改.git/config 的命令,因此必须对每个本地存储库执行此操作。

命令的基本形式如下。

git submodule init [<path>…​]

更新

  • 签出在.git/config 注册的子模块。
    • 您可以使用git ls-tree <tree-ish> [<path>…​] 查看哪些提交已签出。
      • 例如git ls-tree main mySubmoduleA
    • 当前签出的提交可以在git submodule status 找到。
      • 当然你可以在子模块中git log -n 1
  • 更新是基于.git/config执行的,所以在里面必须完成。
    • 使用--init 选项,在执行更新之前进行初始化很方便。
  • 更新将创建或更新.git/modules/<submodule-path>
    • 包含子模块的.git 文件夹。

命令的基本形式如下。

git submodule update --init [<path>…​]

去初始化

  • 删除.git/config子模块的注册。
    • 不从存储库中删除子模块。
    • 因此,.git/modules/<path> 的内容不会被删除。

删除子模块

要删除子模块,请使用git rm,就像删除普通文件一样。

git rm <submodule-path>

这会将垃圾留在.git 文件夹下,因此您需要在必要时手动删除垃圾(例如,如果您想将子模块重新添加到同一路径)。

参考:[git] 删除和重新添加子模块

要从本地存储库中完全删除子模块,请运行以下命令:

git submodule deinit <path>
git rm <path>
rm -rf .git/modules/<path>

我在取消它之前删除了一个子模块

如果在执行deinit 之前删除带有git rmgit revert 的子模块,deinit 将不起作用。

在这种情况下,您必须手动执行 deinit 所做的操作,以将子模块的痕迹从本地存储库中清除。

具体来说,使用文本编辑器打开.git/config 并删除相应的[submodule "<path>"] 条目。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308630478.html

技术点:

Git

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-10
  • 2021-05-28
  • 2021-11-10
  • 2022-12-23
  • 2021-10-28
  • 2021-05-22
猜你喜欢
  • 2021-09-27
  • 2022-12-23
  • 2021-10-01
  • 2022-12-23
  • 2021-08-20
  • 2022-02-02
  • 2022-12-23
相关资源
相似解决方案