背景
在实际的开发和学习过程中,尤其涉及到前后台共同开发时,需要同时管理前台和后台的Git仓库,此时在同一个Git仓库中添加另一个仓库为子模块仓库,在开发过程中就显得十分的方便和快捷。
具体实现
在Git中添加子模块是一个简单的过程。子模块允许你在一个Git仓库(称为父仓库)中嵌套另一个Git仓库(称为子模块仓库)。以下是添加子模块的步骤:
1、初始化父仓库(如果尚未初始化):
如果你还没有初始化Git仓库,首先需要在父项目的根目录下执行以下命令来初始化Git:
git init
2、添加子模块:
使用git submodule add命令来添加子模块。你需要提供子模块的URL和(可选的)路径。例如,如果你想在父仓库的my_submodule目录中添加一个子模块,可以执行:
git submodule add <repository_url> my_submodule
其中 <repository_url> 是子模块的Git仓库URL。这将在父仓库中创建一个名为my_submodule的目录,并将子模块的内容克隆到该目录中。同时,Git还会在父仓库的.git/modules目录下创建一个子模块仓库的克隆,并在父仓库的.git/config文件中记录子模块的信息。
3、提交更改:
在添加了子模块后,你需要将更改提交到父仓库中。首先,查看状态以确认子模块已经被添加:
git status
你应该能看到关于新添加的子模块的信息。然后,添加并提交这些更改:
git add .
git commit -m "Add submodule my_submodule"
4、克隆包含子模块的仓库:
当其他人克隆你的父仓库时,子模块目录最初会是空的。为了让子模块的内容被正确地拉取下来,克隆者需要执行以下命令:
git submodule init
git submodule update
或者,他们可以使用git clone --recurse-submodules命令来一次性克隆父仓库和所有子模块。
5、更新子模块:
如果你需要更新子模块到其仓库的最新状态,你可以进入子模块的目录并执行git pull。然后,回到父仓库的目录并提交对子模块的引用更改:
cd my_submodule
git pull
cd ..
git add my_submodule
git commit -m "Update submodule my_submodule"
6、实操截图展示
更新过子模块后,可以将子模块远端仓库的代码同步到父仓库路径下,且可以在VSCode的Source Control中查看到该子模块,便于在编译器中同时查看和修改2个仓库的代码。
注意
当子模块更新时,Git只存储子模块仓库的引用(即提交的哈希值),而不是子模块仓库的所有内容。这意味着父仓库的提交历史不会因为子模块的更改而膨胀。