Git 在当前仓库中添加子模块(与其他 git 仓库相关联 作者: Chuwen 时间: 2021-12-27 分类: 编程工具 评论 [TOC] ## 起步 假设你有 2 个仓库: - 前端:`git@10.0.0.1:project/rear-end.git` - 后端:`git@10.0.0.1:project/front-end.git` 想要在后端的仓库中,关联前端的仓库地址,那么我们可以使用 Git 工具 - 子模块 > 相关文档:[https://git-scm.com/book/zh/v2/Git-工具-子模块](https://git-scm.com/book/zh/v2/Git-工具-子模块) ### 开始使用子模块 > 我们现在从头开始弄,从开始拉后端项目代码开始 ```shell git clone git@10.0.0.1:project/front-end.git cd front-end # 用这个的话就会在当前项目路径下创建一个 rear-end 名字的文件夹 git submodule add git@10.0.0.1:project/rear-end.git # 如果你要指定文件夹名字(如 web),就这么做 git submodule add git@10.0.0.1:project/rear-end.git web # 上述操作完成后,会在项目根目录下出现 .gitmodules 文件和 web 文件夹 # 然后将这两个文件添加 git add .gitmodules web # 提交信息 git commit -m "提交信息" # 推送到远程仓库地址 git push ``` ## 假设其他成员拉取代码 1. 第一种 ```shell git clone git@10.0.0.1:project/front-end.git cd front-end # 这时候发现 web 目录是空的 ls web # 我们需要先出实话子模块 git submodule init # 然后更新 git submodule update ``` 2. 第 2 种 > 我希望拉取代码时,直接也把子模块也拉取进来,那么我们就可以这么做 > > `git clone` 命令传递 `--recurse-submodules` 选项,它就会自动初始化并更新仓库中的每一个子模块, 包括可能存在的嵌套子模块。 ```shell git clone --recurse-submodules git@10.0.0.1:project/front-end.git ``` ## 如果你不想在子目录中手动抓取与合并,那么还有种更容易的方式。 > 运行 `git submodule update --remote`,Git 将会进入子模块然后抓取并更新。 --- 个人简单记录,如果有误请指正!