克隆 git 子模块
git 子模块的另一个常见操作是克隆带有子模块的项目。
我们可以使用 git clone 命令继续。
借助此命令,我们可以克隆目录及其子模块。
请注意,它不会克隆其中的文件。
你需要运行 git submodule init 和 git submodule update 。
第一个命令更新本地 .git/config 文件以及来自 .gitmodules 的映射。
第二个命令将从子模块项目中获取整体数据,检查父项目中的映射提交。
通常,如果我们想将项目保存在不同的存储库中,使用子模块是正确的决定。
无论如何,我们应该考虑到使用子模块非常棘手的事实,并且我们不能将它们用于所有项目。
可以将不同的 git 存储库包含到 Git 中的单个存储库中。
包含的存储库称为子模块。
子模块是父存储库工作目录中特定路径中父存储库中涉及的存储库。
拉取最新子模块的步骤
在使用子模块时,经常需要拉取最新的 git 子模块。
如果我们是第一次这样做,我们应该在其存储库中启动子模块。
请按照以下步骤操作:
设置子模块
通过运行创建一个新的子模块:
git submodule update --init --recursive
更新远程分支的最新提示:
如果我们使用的 Git 版本是 1.8.2 或者更高版本,我们可以添加 --remote 参数,并运行以下命令:
git submodule update --recursive --remote
--remote 参数会将非默认分支添加到 .git/config 或者 .gitmodules 中的特定文件。
如果 Git 版本是 1.7.3.
或者以上,我们需要运行:
git submodule update --recursive
或者
git pull --recurse-submodules
在 git 子模块中推送更新
由于子模块代表一个单独的存储库,它允许在子模块的目录中运行 git push 命令。
如果我们在主要存储库中调用 git status 命令,则子模块将位于“未暂存以进行提交的更改”中,并带有以下文本:“已修改的内容。
它将在另一个提交中检查子模块的代码,而不是主存储库所指向的代码。
如果你想让主体仓库指向新的提交,你需要调用 git add 命令,提交,最后推送它。