电玩城打鱼捕鱼-专业24小时上下分

Git的submodule功能详解,Submodule使用完整教程

六月 27th, 2019  |  电玩城捕鱼系统简介

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

自从看了蒋鑫的《Git权威指南》之后就开始使用Git
Submodule功能,团队也都熟悉了怎么使用,多个子系统(模块)都能及时更新到最新的公共资源,把使用的过程以及经验和容易遇到的问题分享给大家。

目录

Git权威指南 PDF高清中文版
http://www.linuxidc.com/Linux/2013-10/91053.htm

  1. 前言
  2. 准备工作
  3. TortoiseGit上git submodule功能实现
  4. 添加子模组的步骤
    第一步:使用submodule add…添加子模组
    第二步:查看.gitmodules的内容
  5. 克隆带子模组的版本库的步骤
    第一步:克隆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操作
  6. 对submodule下的内容进行修改后commit、push,对submodule目录作pull
  7. 移除Submodule
    第一步:用Delete(keep local)
    将目录或文件命令从git的索引库中移除子模块目录
    第二步:删除物理文件
    第三步:删除.gitmodule文件
    第四步:删除.git/config的submodule配置源文件
    第五步:删除后,提交更改
Git Submodule功能刚刚开始学习可能觉得有点怪异,所以本教程把每一步的操作的命令和结果都用代码的形式展现给大家,以便更好的理解。

git的submodule功能详解

1.对于公共资源各种程序员的处理方式

每个公司的系统都会有一套统一的系统风格,或者针对某一个大客户的多个系统风格保持统一,而且如果风格改动后要同步到多个系统中;这样的需求几乎每个开发人员都遇到,下面看看各个层次的程序员怎么处理:

假如对于系统的风格需要几个目录:css、images、js。

  • 普通程序员,把最新版本的代码逐个复制到每个项目中,如果有N个项目,那就是要复制N
    x 3
    次;如果漏掉了某个文件夹没有复制…@(&#@#。

  • 文艺程序员,使用Git Submodule功能,执行:git submodule
    update
    ,然后冲一杯咖啡悠哉的享受着。


引用一段《Git权威指南》的话:
项目的版本库在某些情况虾需要引用其他版本库中的文件,例如公司积累了一套常用的函数库,被多个项目调用,显然这个函数库的代码不能直接放到某个项目的代码中,而是要独立为一个代码库,那么其他项目要调用公共函数库该如何处理呢?分别把公共函数库的文件拷贝到各自的项目中会造成冗余,丢弃了公共函数库的维护历史,这显然不是好的方法。

1.前言

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

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

 

2.开始学习Git Submodule

“工欲善其事,必先利其器”!

既然文艺程序员那么轻松就搞定了,那我们就把过程一一道来。

说明:本例采用两个项目以及两个公共类库演示对submodule的操作。因为在一写资料或者书上的例子都是一个项目对应1~N个lib,但是实际应用往往并不是这么简单。

2.准备工作

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

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

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

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

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

 

2.1 创建Git Submodule测试项目

3.TortoiseGit上git submodule功能实现

 

2.1.1 准备环境

 

1
2
3
➜ henryyan@hy-hp ~ pwd
/home/henryyan
mkdir -p submd/repos

创建需要的本地仓库:

 

1
2
3
4
5
cd ~/submd/repos
git --git-dir=lib1.git init --bare
git --git-dir=lib2.git init --bare
git --git-dir=project1.git init --bare
git --git-dir=project2.git init --bare

初始化工作区:

 

1
2
mkdir ~/submd/ws
cd ~/submd/ws
标签:

Your Comments

近期评论

    功能


    网站地图xml地图