Git submodule使用指南(二)
之前发布了git submodule使用指南(一),今天这个第二篇,会写一些修改方面的操作和我的理解。
我个人认为,子模块在使用的过程才是最值得注意的地方,所以也没有跟上面的内容一起作为“增删改查”系列写下去。 “改” 我认为是最重要的一环。其中又可以分为:
- 对本地的子模块进行修改
- 更新他人修改的子模块内容
对本地的子模块进行修改
上面提到更新子模块的操作
git submodule update --remote
复制代码
但是此时的子模块是出于一个特殊的状态,虽然上游的变化被更新到了本地,但是本地子模块会处于一个游离的HEAD状态。
在HEAD状态下,如果将本地修改的内容进行commit,是不会“附着”到任何分支上的。游离的内容,会在切换分支之后消失。
那怎么操作才是正确的呢?
- 先进入子模块,然后检出一个分支。
- 再执行commit等本地操作
- 执行
git submodule update —remote —merge
,将上游的变化合并到本地的这个分支上。如果你忘记—rebase或—merge,Git 会将子模块更新为服务器上的状态。并且会将项目重置为一个游离的 HEAD 状态。要弥补这个错误的话,重新执行1和3就可以了。 - 如果本地的文件跟上游文件出现冲突,则按照普通解决办法解决了再提交就好了。
- 发布改动(推送):在父仓库执行
git push
时添加--recure-submodule
参数,此参数表示递归子模块,可以设置为2个值“check”和“on-demand”。check会使没推送子模块的父仓库本身推送失败。而on-demand会尝试自动推送子模块后再推送父仓库,如果子模块由于其他原因失败,那么父仓库也会推送失败。
合并子模块的改动
根据Gitbook的描述,这是当同一分支在本地和上游出现了不同分叉,需要进行合并的时候,并且二者不是祖先和后代的关系(或者说不是一条分子上的提交)。
操作方法如下:
- 对上游的提交,进行检出分支
- 将1检出的分支,合并到本地
- 解决冲突
- 回到主项目
- 检查子模块的记录
- 解决子模块冲突
- 提交主仓库合并
一些我个人的理解
子模块的使用上面说得可能还是有点比较绕,我个人认为比较合适我们团队的子模块工作流应该比较简单。
- 主项目需要在自模块上开发新功能时,需要在主项目内的子模块开新分支,然后进行开发
- 子模块的代码需要独立提交,形成commit信息记录在主仓库
- 由于主项目最终也是需要进行打包的,所以子模块的版本只要是基于master,就认为是可信的
- 最后主项目的整个版本经过验证需要上线后,则将子模块的分支合并到子模块的master分支上,那么下一个进行子模块开发的人,就会包含到最新的代码
转载于:https://juejin.im/post/5cae05e25188251b19486e8d
Git submodule使用指南(二)相关推荐
- git submodule 使用场景汇总
文章目录 1. 前言 2. 基础命令介绍 2.1 场景一:已有仓库,添加一个子模块 2.2 场景二:已有仓库,添加一个子模块的特定分支 2.3 场景三:已有仓库,更新子模块内容 2.4 场景四:已有仓 ...
- Git Submodule管理项目子模块
使用场景 当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去维护,这时候我们就要用到git的submodule功能. 常用命令 git clone ...
- 【git】Git Submodule管理项目子模块
文章目录 1.概述 2. 使用场景 3. 如何使用 3.1. 创建带子模块的版本库 3.2. 克隆带子模块的版本库 3.3. 修改子模块 3.4. 更新子模块 3.5. 删除子模块 4.删除子模块 5 ...
- git下载子模块命令git clone --recursive和git submodule update --init
目录 方法一:git clone --recursive 方法二:git submodule update --init 有时github上的工程可能会包含一些子模块,例如 这时候如果你只是用下面的命 ...
- git submodule用法(超简单体验)
前言 当我们的项目很大很复杂的时候,需要将各个模块文件进行抽离,以此来降低项目文件之间的耦合程度.(当然你项目不大不复杂也可以使用,看个人喜好啦!!!)这个时候就可以使用git submodule来对 ...
- npm install mysql 报错_npm遇到的问题--npm install 执行报错 /bin/git submodule update -q --init --recursive...
1.执行npm i 安装依赖时,报错:cannot read property 'match' of undefined 据说是npm本地缓存导致 解决方案: rm -rf package-lock. ...
- WPF实用指南二:移除窗体的图标
原文:WPF实用指南二:移除窗体的图标 WPF没有提供任何功能来移除窗体上的icon图标.一般的做法是设置一个空白的图标,如下图1: 这种做法在窗体边框与标题之间仍然会保留一片空白. 比较好的做法是使 ...
- git submodule 删除及更新URL
git submodule 删除及更新URL 转载 2016年03月08日 10:27:21 删除一个submodule 1.删除 .gitsubmodule中对应submodule的条目 2.删除 ...
- git submodule获取子模块
从github上获取工程,经常会出现依赖其它github上代码的情况,这时如果每一个都手动下载,实在太麻烦了.其实git给我们提供了相互引用的功能,可以在工程中直接引入其它的代码库,这样可以保证每次使 ...
- 使用git submodule
git submodule 引用 $ git help submodule $ git submodule add https://github.com/aditya-grover/node2vec. ...
最新文章
- mysql7 zip windows_mysql 5.7 windows zip 版本安装配置
- 慧鱼机器人编程语言的特点_慧鱼机器人课程设计报告.doc
- python 车牌识别简单_ZKTeco 智能车牌识别 停车如此简单
- 如何正确的在项目中接入微信JS-SDK
- java n-ide 支持库,Android N是否要求IDE可以与Java 1.8或更高版本一起运行?
- 设计模式示例_责任链设计模式示例
- ubuntu Qt Creator不能输入中文
- spark sql select selectExpr简析
- matlab影像阿伯斯投影,D3.js 世界地图(一)投影方式
- 当后台返回的图片在前端加载不出来时,前端做默认图片展示
- 国内视频监控芯片方案分析
- 【二极管】稳压二极管全面分析
- IReport问题的整理
- 梁念坚与鲍尔默大唱反调
- CityEngine2018正版免费申请试用教程
- 普通人学会Python到底具体能做什么呢?
- win10安装的es设置自启动时报错Failed starting ‘elasticsearch-service-x64‘ service
- SMB交换机、接入交换机、汇聚交换机、核心交换机
- C# 读取XML文件的几种方式
- 尤雨溪和Vue的那些事
热门文章
- dll,sys文件被认定为病毒后如何删除
- 游戏加加导致cpu降频
- Win10找回自带的Windows照片查看器:打开jpg、png、gif格式的图片
- 2021年8月NOC全国中小学信息技术创新与实践大赛 软件创意编程小学高年级组Python决赛题解析
- java与wps_java能否wps调用页码
- 视频直播的购物平台,网站,app
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
- 跨境电商shopee这个平台怎么样?百万shopee卖家笑了,不要再犹豫了
- 解读SPSS多元方差分析中的多因素多变量的相互影响
- android ipv6 谷歌,Ipv6使用google服务的DNS