git submodule 子模块
### 背景:为什么要用子模块?
在开发项目中可能会遇到这种问题:在你的项目中使用另一个项目,也许这是一个第三方开发的库,或者是你独立开发的并在多个父项目中使用的。简单来说就是A同学开发了一个模块,被B\C同学共同调用,,可能就形成了这种**模块调用**关系。
然后就产生了一个问题:我想将两个项目单独处理。但是又需要再其中一个中使用另一个。
### 解决方案
git给了一个处理方案--子模块
* 子模块允许将一个git仓库作为另一个git仓库的子目录,他能让你将另一个仓库克隆到自己的项目中区去,并且保持提交的独立。
* 子模块关键字:`git submodule`
### 如何使用子模块
假如我有两个仓库,`module`(目标仓库)和`submodule`(子模块仓库)。
在现有的仓库中加入子模块
`git submodule add https://gitee.com/Hancoson/submodule.git module`
* 现在在module项目子目录中就会有一个submodule子模块。
```
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: .gitmodules
new file: submodule
```
我们会发现多两个新的文件,首先是.gitmodules文件。这个文件是一个配置文件,保存了项目URL和已经拉取的本地目录之间的映射
* 查看`.gitsubmodule`文件 `cat .gitsubmodule`
```
[submodule "submodule"]
path = submodule
url = https://gitee.com/Hancoson/submodule.git
```
如果有多个子模块,文件里会有多个条目。但是这个文件个其他文件一样也是处于版本管理控制之下的,就像`.gitignore`文件一样,这样该子模块是和其他们文件一样可以被推送和拉取。这也是克隆该项目获知子模块项目来源的途径。
* 提交增加的子模块到该项目的远程仓库中
`commit` 方式和普通提交的方式相同
* 克隆一个带有子模块的项目
`git clone <url>`克隆这个项目时,默认会包含该子模块的所有目录,但是目录中不会有任何文件,这是需要运行两个命令:
1. `git submodule init` 用来初始化本地配置文件;
2. `git submodule update`用来拉取module目录中的所有数据,并检测出你上层项目所列的合适的提交。
```
$ git submodule init
Submodule 'submodule' (https://gitee.com/Hancoson/submodule.git) registered for path 'submodule'
$ git submodule update
Submodule path 'submodule': checked out '471741e958c2ef0096ad5971c264041a9295ce3b'
```
* 修改子模块
切换到要修改代码的子模块,修改代码,push方式和普通方式相同。
git submodule 子模块的更多相关文章
- Git submodule - 子模块【转】
子模块 有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使 ...
- Git submodule 子模块的管理和使用
因为代码分了两个小组管理,一部分代码使用跨平台语言实现,一部分使用原生实现. 所以使用Git submodule 来进行管理. 1,查看/更新 子模块 $ git submodule add ssh: ...
- git submodule使用的笔记
git submodule 子模块的应用: 以下为使用流程的一些笔记: 1. 首先你的工作区 mainPJ cd mainPJ git init echo "this is mainPJ&q ...
- 转:Git Submodule管理项目子模块
使用场景 当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去维护,这时候我们就要用到git的submodule功能. 常用命令 git clone ...
- Git Submodule管理项目子模块
使用场景 当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去维护,这时候我们就要用到git的submodule功能. 常用命令 git clone ...
- Git 子模块:git submodule
imtianx 2018年03月08日阅读 2057 Git 子模块:git submodule 工作中,可能会遇到在一个Git仓库 中添加 其他 Git 仓库的场景.比如,在项目中引用第三方库.或者 ...
- 使用Git Submodule管理子模块
转自:https://segmentfault.com/a/1190000003076028 使用场景 基于公司的项目会越来越多,常常需要提取一个公共的类库提供给多个项目使用,但是这个library怎 ...
- git 工具 - 子模块(submodule)
From: https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97 子模块 有种情况我们经常 ...
- git submodule git 子模块管理相关操作
Git 子模块操作相关的一些命令备忘: # 当使用git clone下来的工程中带有submodule时,初始的时候 submodule的内容并不会自动下载下来的,需执行如下命令: git submo ...
随机推荐
- .NET Core 学习资料精选:入门
开源跨平台的.NET Core,还没上车的赶紧的,来不及解释了-- 本系列文章,主要分享一些.NET Core比较优秀的社区资料和微软官方资料.我进行了知识点归类,让大家可以更清晰的学习.NET Co ...
- 数据结构-循环队列(Python实现)
今天我们来到了循环队列这一节,之前的文章中,我介绍过了用python自带的列表来实现队列,这是最简单的实现方法. 但是,我们都知道,在列表中删除第一个元素和删除最后一个元素花费的时间代价是不一样的,删 ...
- Java 内存映射文件
import java.io.*; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import jav ...
- @ImportResource导入的xml配置里的Bean能够使用@PropertySource导入的属性值吗?
每篇一句 大师都是偏执的,偏执才能产生力量,妥协是没有力量的.你对全世界妥协了你就是空气.所以若没有偏见,哪来的大师呢 相关阅读 [小家Spring]详解PropertyPlaceholderConf ...
- 2019.6.16完成classstack任务
最终信息 4 ShineEternal 任务完成,账号已注销 120 149 80.537%
- 关于Calendar的一些用法总结
import java.util.Calendar; import java.security.KeyStore.TrustedCertificateEntry; import java.text.D ...
- AndroidStudio使用genymotion模拟器
安装Genymotion之前首先要安装好virtualbox这个软件 virtual官方网站:https://www.virtualbox.org/ genymotion的官方网站: https:// ...
- Python小故事--------Tkinter的组件描述及解析
概念 Tkinter: 是Tk图形用户界面工具包标准(ctl)的Python接口,作为一个轻量级的跨平台图形用户界面(GUI)开发工具 frame: 屏幕上的一块矩形区域,多是用来作为容器(conta ...
- TP框架基础(三)
[系统常量信息] 获取系统常量信息: 如果加参数true,会分组显示: >系统常量信息里经常用到的是user里的路径 > APP_PATH =>string'./shop/' 项目路 ...
- TP框架基础 (二) ---空控制器和空操作
通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控 ...