项目通过git顶层仓库管理子仓库

       在平时的开发过程中,经常使用git仓库进行代码管理,对于项目组不同工作权限,也可以对项目文档进行管理,通过顶层仓库对各成员的子仓库进行汇总,配置不同成员的访问权限,可以起到很好的项目资料共享与管理。

一、所需环境

  1. git代码管理:Git - Downloading Package (git-scm.com)
  2. TortoiseGit可视化操作:TortoiseGit – Windows Shell Interface to Git
  3. TortoiseGit汉化:Download – TortoiseGit – Windows Shell Interface to Git​​​​​​

二、子模块简介

        子模块(submodule)是一种将一个 Git 仓库作为另一个 Git 仓库的子目录进行管理的方法。它允许你将一个 Git 仓库嵌套到另一个仓库中,并保持提交的独立。

子模块有以下几个用处:

  1. 管理依赖关系:如果一个项目依赖于另一个项目的代码,可以将依赖的项目作为子模块引入到主项目中。这样,主项目可以轻松地跟踪依赖项目的更新,并确保使用的是正确版本的依赖代码。
  2. 代码共享:子模块允许你将一个仓库的代码共享给多个项目。这对于复用代码和组件非常有用,可以避免重复的代码拷贝和维护工作。
  3. 保持提交的独立:子模块保持了提交的独立性,即主项目和子模块的提交是分开进行的。这样可以确保子模块的开发和更新不会干扰到主项目的代码库。

 三、顶层仓库管理子模块步骤

1、仓库管理架构

通过仓库管理架构关系,建立对应的文件夹,在主仓库文件夹下分别建立子仓库1、2、3,层次如下:

2、建立仓库

建立子仓库1:https://gitee.com/****/sub-warehouse-1.git

建立子仓库2:https://gitee.com/****/sub-warehouse-2.git

建立子仓库3:https://gitee.com/****/sub-warehouse-3.git

建立主仓库:https://gitee.com/****/main-warehouse.git

 3、将文件夹和仓库建立关联

(1)在本地子仓库1目录下,右键选择-->Git在这里创建版本库->确定;创建版本仓库。

 (2)建立本地文件子仓库1与服务器远端仓库连接,右键选择TortoiseGit->设置,填入服务器远端仓库URL,后续的本地仓库通过此URL地址和远端仓库进行关联。

同理,将本地仓库2、3、主仓库与远端同样建立关联,关联完成后如下图所示:

4、添加子模块

  在主仓库文件夹下添加子仓库1、2、3三个子模块,右键选择TortoiseGit->添加子模块

 在弹出的添加子模块界面中,填入版本库即远端服务器仓库URL,路径即本地仓库文件夹路径;

此时会在主仓库文件路径下生成.gitmodules文件;

 .gitmodules文件内容如下,包含子模块信息:

依次添加完子仓库1、2、3后,.gitmodules文件信息如下,表明添加成功;

在本地主仓库文件目录下推送至远程主仓库,可在远程主仓库列表下可查看到子模块

5、验证子模块功能

(1)验证推送功能

在子仓库1目录下,包含子仓库1测试.txt文件,文件内容初始为“子仓库1测试”,

添加修改内容如下:

在主仓库目录下,右键点击->提交git,勾选更改的子仓库1,点击提交

 此时产生如下提示:

 表示在更新父工程的同时,需要提交子仓库模块的修改,点击提交进行子模块修改

 子仓库模块本地提交成功后,点击推送,进行更新远程子仓库1,成功后再对主仓库进行提交,然后推送至远程主仓库,推送成功如下图所示

 查看远程子仓库1,哈希标志由原来的8ea6b9c变更成ffd5edf,表示子仓库更新成功,查看内容为更新后的内容。

 

 查看主仓库,此时主仓库里面子仓库1为更改后的哈希标志ffd5edf,表示推送更新成功。

(2)验证拉取功能

在远程子仓库2下“子仓库2测试.txt”文档下增加如下内容并提交。

提交成功后,子仓库2的哈希标号已经修改,表明修改提交成功。

 此时进入主仓库查看,子仓库2仍为旧的哈希标号,因为此时主仓库并未自动更新,需要手动更新操作。

回到本地主仓库目录下,右击TortoiseGit->更新子模块,对子仓库模块更新内容。

更新成功后,进入本地子仓库2文件夹,打开“子仓库2测试.txt”文件,发现内容已更新。

回到本地主仓库文件夹,对更新后的主仓库提交,提示子仓库2内容修改。

提交成功后,再点击推送,将修改内容推送到远端主仓库更新。

推送成功后,查看远程主仓库,此时子仓库2的哈希标号进行了更新。

最后验证远程主仓库的整体拉取备份,在本地单独新建test文件夹,设置为主仓库版本库,关联远程主仓库URL,将远程主仓库内容整体拉取到本地test文件夹,拉取成功后,此时子仓库1、2、3文件夹均为空文件夹。

此时在test文件夹下,对主仓库的子模块进行更新,右击TortoiseGit->更新子模块。

进行如下勾选

等待更新子模块完成。

此时进本地入test文件夹下子仓库1文件夹查看,包含如下文件

打开“子仓库1测试.txt”文件查看,为最后的更新内容。

此时,对于主仓库管理子仓库模块的推送和拉取测试成功。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值