Git的submodule功能详解


摘要:项目的版本库在某些情况下需要引用其他版本库中的文件,例如有一套公用的代码库,可以被多个项目调用,这个公用代码库能直接放在某个项目的代码中,而是要独立为一个代码库,那么其他要调用公用的代码库该如何处理?分别把公用的代码库拷贝到各自的项目中会造成冗余,丢弃了公共代码库的维护历史,这些显示不是好的办法,现在要了解的git子模组(git submodule)就解决了这个问题。

目录

1. 前言
2. 准备工作
3. TortoiseGit上git submodule功能实现
1. 添加子模组的步骤
第一步:使用submodule add...添加子模组
第二步:查看.gitmodules的内容
2. 克隆带子模组的版本库的步骤
第一步:克隆super主版本库
第二步:克隆子模组
3. 对主Git库工作区作commit、checkout、revert、pull、push等更改Git工作区内容的操作时,查看Submodule目录下内容的效果
1) 对主Git库工作区作commit操作
2) 对主Git库工作区作checkout操作
3) 对主Git库工作区作revert操作
4) 对主Git库工作区作push操作
5) 对主Git库工作区作pull操作
4. 对submodule下的内容进行修改后commit、push,对submodule目录作pull
5. 移除Submodule
第一步:用Delete(keep local) 将目录或文件命令从git的索引库中移除子模块目录
第二步:删除物理文件
第三步:删除.gitmodule文件
第四步:删除.git/config的submodule配置源文件
第五步:删除后,提交更改

gitsubmodule功能详解

1.前言

项目的版本库在某些情况下需要引用其他版本库中的文件,例如有一套公用的代码库,可以被多个项目调用,这个公用代码库能直接放在某个项目的代码中,而是要独立为一个代码库,那么其他要调用公用的代码库该如何处理?分别把公用的代码库拷贝到各自的项目中会造成冗余,丢弃了公共代码库的维护历史,这些显示不是好的办法,现在要了解的git子模组(git submodule)就解决了这个问题。

Git 子模块功能允许你将一个Git仓库当作另外一个Git仓库的子目录。这允许你克隆另外一个仓库到你的项目中并且保持你的提交相对独立。

 

2.准备工作

首先需要两个版本库例如:

1)一个公共的版本库(例如:libA.git)

git@gitlab.szreach.com:fengyang/liba.git

2)一个引用公共版本库的主版本库(例如:super.git)

git@gitlab.szreach.com:fengyang/super.git

 

3.TortoiseGit上git submodule功能实现

 

1.添加子模组的步骤

 

第一步:使用submodule add...添加子模组

在需要作添加子模组的Git版本库中右击,选择“TortoiseGit->Submodule Add...,在“Repository:”里面输入需要添加子模组的版本库路径,在“Path:

中输入添加子模组存放的目录路径。如下图所示:

此时查看需要添加子模组的Git工作区的目录结构。在根目录下多了一个.gitmodules文件,并且公共代码库被克隆到lib/lib_a目录下。

 

第二步:查看.gitmodules的内容

.gitmodules的内容记录着含子模组存放的目录路径及子模组版本库的路径

注:此时工作区尚未提交,完成提交后,子模组才算正式完成在需要作添加子模组的Git版本库创立

注:此主版本库(super.git)就变成了一个包含子模组的版本库。

 

2.克隆带子模组的版本库的步骤

克隆带子模组的git库,并不能自动将子模组的版本库克隆出来,对于只关心项目本身的数据,而不关心项目引用的外部项目数据的用户,这个功能非常好,数据没有冗余而且克隆的速度也很快。

 

第一步:克隆super主版本库

在工作区中克隆主主版本库后,会发现子模组的版本库并没有克隆,只有将存放子模组版本库的目录克隆下来了。

 

----:存放子模组版本库的目录路径

 

第二步:克隆子模组

如果需要克隆出子模组形式引用的外部库,首先需要执行Submodule Update操作。

在需要作克隆子模组的Git工作区中右击,选择“TortoiseGit->Submodule Update...,点击“OK”即可。

 

执行Submodule Update...操作后就会把子模组的版本库克隆下来。

 

 

Git 的详细介绍:请点这里
Git 的下载地址:请点这里

推荐阅读:

Fedora通过Http Proxy下载Git

在Ubuntu Server上安装Git

服务器端Git仓库的创建(Ubuntu)

Linux下Git简单使用教程(以Android为例)

Git权威指南 PDF高清中文版

  • 1
  • 2
  • 3
  • 下一页

相关内容