Git Submodule 是一种功能,可以将一个 Git 仓库作为另一个 Git 仓库的子模块集成在其中

由于每次使用Git Submodule时都要进行搜索,所以将各个命令及其意思整理在一起。

如果您想了解Git Submodule的概述并找到了这篇文章,那么请查看Git submodule的基础知识,它非常清晰明了。

参考文献请参照以下链接:https://git-scm.com/docs/git-submodule/2.36.0

添加

.gitmodulesに新しいサブモジュールを追加する。
デフォルトで後述するinitも同時に行われる。

命令的基本形式如下。

git submodule add <repository> [<path>]

初始化

.gitmodulesに書かれたサブモジュールを.git/configに登録する。

.git/configを変更するコマンドなので、ローカルリポジトリごとに行う必要がある。

以下是命令的基本形式。

git submodule init [<path>…​]

更新

.git/config に登録されたサブモジュールをチェックアウトする。

どのコミットがチェックアウトされるかは git ls-tree […​]で確認できる。

E.g. git ls-tree main mySubmoduleA

現在チェックアウトされているコミットはgit submodule statusで確認できる。

もちろん、サブモジュール内で git log -n 1をしてもよい。

updateは.git/config に基づいて実行されるので、予めinitを行っておく必要がある。

–initオプションを付けると、updateの実行前にinitをやってくれて便利。

updateを行うと、.git/modules/が作成あるいは更新される。

中にはサブモジュール用の.gitフォルダが入っている。

基本命令的形式如下所示。

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

销毁

.git/configのサブモジュールの登録を削除する。

リポジトリからサブモジュールを削除するわけではない。
よって.git/modules/の中身は削除されない。

删除子模块

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

git rm <submodule-path>

需要根据需要手动清除垃圾,例如,如果想要在相同的路径下重新添加子模块,这样才能避免在.git文件夹下留下垃圾。

参考:[git] 关于删除和重新添加子模块的说明

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

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

在执行deinit之前不小心删除了子模块。

如果在执行deinit之前使用git rm或git revert删除了子模块,那么deinit将无法成功进行。

要删除本地存储库中子模块的痕迹,需要手动执行deinit所做的操作。

可以通过打开文本编辑器并删除对应的[submodule “”]条目来具体进行操作。

广告
将在 10 秒后关闭
bannerAds