使用git 子模块

添加公共的库到当前项目中

添加submodule


git submodule add 子模块项目地址

子模块添加成功后当前项目会多一个.gitmodules隐藏文件,文件内容保存submodule的引用信息,包括路径和repo地址


[submodule "VTAlertView"]

path = VTAlertView

url = https://github.com/xiaolidaodao/VTAlertView.git

子模块添加完成在主项目提交所添加内容

在子项目加入到项目的时候,其实做了这样三件事:

  • 记录引用的子项目仓库,在.git/config中

  • 记录当前项目中子项目的目录位置,在生成的.gitmodules中

  • 记录子项目的commit id

所以在当前项目push到remote repository的时候,只是更新了引用的commit id,那么在其他人clone项目的时候,就可以获取子项目的commit id,然后在git submodule update的时候获取子项目commit id所表示的commit

clone带有submodule的项目

  • 下载主项目

git clone 主项目地址

  • 下载子模块

git clone --recursive 或 git submodule update --init --recursive

当前子模块为HEAD分支,切换至master分支

因为父项目不记录子模块的修改,只记录commit id,所以clone的时候只获取到对应的commit,而不在任何分支上,但是master分支的commit id和HEAD保持一致,所以只要git checkout master,而不需要新建分支

修改submodule

两种方式修改子模块

  • 直接在主项目中打开子模块修改

  • 单独下载子模块项目修改

注:子项目只要更新,父项目必须更新引用子项目的commit id

更新submodule


git submodule foreach git pull 或

cd submodule

git pull

参考

git submodule

Jenkins应用git submodule

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容