git添加子模块(submodule)
背景
有时候自己的项目需要用到别人的开源代码,例如 freertos
和 tinyusb
这个时候有两种选择
- 将开源的代码下载下来放到自己的
git
中管理- 缺点:如果远端仓库更新,自己仓库的代码不会更新
- 将开源代码通过子模块(submodule)的形式加入到自己的仓库中
- 优点:自己仓库代码时刻和上游代码保持更新
子模块(submodule)添加方法
例如需要将 tinyusb
开源代码添加到自己的代码仓库中
- 进入你想将
tinyusb
添加到的目录 - 在该目录下执行
上述命令执行之后会将对应的git submodule add https://github.com/hathach/tinyusb.git
submodule
代码下载下来。
这时在仓库的根目录会有新增一个.gitmodules
文件 - 提交子模块到远程仓库
到这里git add . git commit -m "add submodule project" git push
tinyusb
子模块就添加到自己的仓库了,
效果图如下:
这里点击一下蓝色字体就可以跳转到对应的仓库
子模块(submodule)同步问题
git submodule init
git submodule sync
git submodule update