前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >git submodule 的使用

git submodule 的使用

作者头像
饶文津
发布于 2021-11-01 08:24:26
发布于 2021-11-01 08:24:26
94500
代码可运行
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏
运行总次数:0
代码可运行

当我们要把另一个仓库的代码作为子目录放到当前仓库时,为了防止代码冗余,我们应该使用 git 的子模块 submodule 功能。

引入

https://github.com/my/repo.git 引入当前项目,创建一个folder 文件夹来存放代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git submodule add https://github.com/my/repo.git folder

此时仓库里会有个 .gitmodules 文件,记录了子仓库信息。我们可以添加多个子仓库。

提交

对主仓库、子仓库都更新代码后,我们提交时,需要依次对两个仓库的 repo 进行提交。在主仓库里进行 git diff 会看到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--- a/folder
+++ b/folder
-Subproject commit 8ffcce923b69d314938ce5485f2ac022986aebcb
+Subproject commit 8ffcce923b69d314938ce5485f2ac022986aebcb-dirty

也就是说主仓库会记录当前该文件夹所用的子项目的 commit 号,所以应该先提交子仓库,再提交主仓库。

拉取

加上--recurse-submodules 参数可以在克隆时初始化并更新子模块。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone xx.git --recurse-submodules
  • 如果用的是 zsh,自带的 alias gcl='git clone --recurse-submodules',也就是用 gcl xx.git 就可以了。
  • 一些文章提到的 --recursive 参数也是一样的作用。

初始化和更新

如果项目拉取时没有加上上面参数,那么需要手动初始化和更新。

初始化并递归更新所有子模块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git submodule update --init --recursive

也可以分开操作,初始化只需要执行一次:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git submodule init

每次需要更新子仓库时,运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git submodule update

删除

还没提交 git 记录的话,把下载的文件夹和 .gitmodules 中相关内容删除即可。否则:

  • git rm --cached folder 删除目录
  • .gitmodules 删除相关内容
  • .git/config 删除.git 中相关内容
  • rm -rf .git/modules/folder 删除相关内容
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
公共模块管理之 Git Submodule 使用总结
在企业级项目开发中,对于较复杂的项目,不可避免地会引用一些公共基础库,或是将代码拆解成公共模块和多个子模块进行管理,主项目工程中的子模块需要对公共模块有依赖关系,却又不必关心公共模块内部的开发流程细节,若直接将公共代码复制到项目中显然是不合适的,因为不方便更新维护。关于公共模块的管理有很多成熟的实践,常见的有 npm 和 git submodule 两类方式:
CS逍遥剑仙
2021/03/21
5.9K0
git 系列 — git submodule 命令及其用法
假如当前存在两个项目:git-main-project(主项目)、git-submodule-project(子模块)。
张宗伟 plus
2022/10/28
3.8K0
Git Submodules 介绍(通俗易懂,总结了工作完全够用的 submodule 命令)
我独立开发了《联机桌游合集》,是个网页,可以很方便的跟朋友联机玩斗地主、五子棋、象棋等游戏。这些游戏是不同的前端项目,而这些项目有很多公共依赖,我是如何管理的呢?
HullQin
2022/10/16
32.2K2
Git Submodules 介绍(通俗易懂,总结了工作完全够用的 submodule 命令)
Git必备命令-子模块
如果不用 -f .gitmodules 选项,那么它只会为你做修改。但是在仓库中保留跟踪信息更有意义一些,因为其他人也可以得到同样的效果。
前端黑板报
2022/06/13
1.1K0
Git必备命令-子模块
8. git-submodule 子模块
Git Submodule 允许一个 git 仓库,作为另一个 git 仓库的子目录,并且保持父项目和子项目相互独立。
acc8226
2022/05/17
7140
理解Git Submodules
npm package的优势在于成熟的管理依赖机制,规范且易用,缺点是主项目只能通过package版本号获取独立模块的更新,在主项目需要与子模块联调的场景就会非常麻烦:
ayqy贾杰
2019/06/12
2.7K0
7.11 Git 工具 - 子模块
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。
shaonbean
2019/05/26
1.5K0
Android组件化面试题之组件化如何进行版本控制和依赖管理?
Git Submodules 是 Git 的一个功能,它允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。这个功能在组件化开发中非常有用,因为它允许你将项目分解为多个独立的模块,每个模块都有自己的版本控制历史和依赖关系,同时还能被主项目引用。
AntDream
2024/09/24
1290
Android组件化面试题之组件化如何进行版本控制和依赖管理?
Git 子模块应用简介
大家做自动化的时候, 常常碰见这样的情况:你自己的项目,UI自动化需要一些前置条件,而这些前置条件正好是你API自动化项目已经完成了的功能,或者说你的项目有一些依赖,而这些依赖正好属于公用项目的一部分。把这些依赖的共有部分copy到你的项目虽然可用,但万一这些被依赖的功能有更新的话,你就只能跟着修改了,非常不方便。
iTesting
2019/10/29
7310
Git 工具 - 子模块: submodule与subtree的使用
git日常使用中,基本都是一个项目一个Git仓库的形式,那么当我们的代码中碰到了业务级别的需要复用的代码,我们一般怎么做呢? 比如:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独
周陆军博客
2023/04/09
3.2K0
Git Submodule项目子模块管理
最近一直在研究客户端的组件化/模块化问题,除了将项目拆分为多个小的子模块,还会涉及到多个子模块管理的问题。下面说一些在模块化开发中的一些基本知识。
xiangzhihong
2022/11/30
9560
git submodule 完整用法整理
版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/article/details/81589477
空空云
2018/09/27
4.7K0
git submodule 完整用法整理
Git 总结
git submodule 允许一个git仓库,作为另一个git仓库的子目录,并且保持父仓库和子仓库相互独立。
yiyun
2022/04/01
1.1K0
Git 总结
浅析 Git 子模块
以前端项目为例,通常我们用 npm dependencies 来集成第三方库,或者将自己维护的多个项目中通用的组件抽取出来。
江米小枣
2020/06/15
1.5K0
Git 速查表(速查大全)
原文链接:http://blog.kesixin.xin/article/61 今天查git命令的时候看到这篇文章,总结的很好,转载一发 Git命令大致分为这几个模块: 序号 模块 功能 1 CREATE 关于创建的 2 LOCAL CHANGES 关于本地改动方面的 3 COMMIT HISTORY 关于提交历史的 4 BRANCHES & TAGS 关于分支和标签类的 5 UPDATE & PUBLISH 关于更新和发布的 6 MERGE & REBASE 关于分支合并类的 7 UNDO
一个淡定的打工菜鸟
2018/09/06
5730
git submodule来管理独立git子目录
在软件开发过程中,通常我们会遇到有一些通用的部分希望抽取出来做成一个公共库的情况,比如安卓和IOS都通用的H5页面。而公共代码库的版本管理是个麻烦的事情。幸运的是,万能的Git有个叫子模组(git submodule)的命令完美地帮我们解决了这个问题。
sunsky
2021/01/06
2.1K0
协同开发利器——Git Submodule
对于我们开发人员来说,Git的操作真的是再熟悉不过了,但是,我们真的利用好了Git了吗?或者,Git还给我提供了哪些更好功能,更丰富的功能帮助我们更好的管理代码,更好的完成项目的构建?
Demo_Yang
2020/02/24
1.6K0
协同开发利器——Git Submodule
对于我们开发人员来说,Git的操作真的是再熟悉不过了,但是,我们真的利用好了Git了吗?或者,Git还给我提供了哪些更好功能,更丰富的功能帮助我们更好的管理代码,更好的完成项目的构建?
Demo_Yang
2020/02/18
3.8K0
git的submodule的使用总结
其实父项目与子模块(submodule)之间的关系很松散,父项目基本只关心子模块的地址以及版本(commit id)。
老高的技术博客
2022/12/28
1.3K0
Git Submodule的介绍与使用
场景复现 公司有10个项目正在开发, 以后会陆陆续续增加新项目, 而这些项目都用到公共的一些类库, 如果你是技术负责人, 你会选择哪个方案? 方案一: 将公共类库依次拷贝至10个项目中 (不推荐 一
乱码三千
2021/07/29
1.2K0
相关推荐
公共模块管理之 Git Submodule 使用总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验