每次使用 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 rm 或git revert 的子模块,deinit 将不起作用。
在这种情况下,您必须手动执行 deinit 所做的操作,以将子模块的痕迹从本地存储库中清除。
具体来说,使用文本编辑器打开.git/config 并删除相应的[submodule "<path>"] 条目。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308630478.html