【git私有服务器-git子模块的使用】

文章目录

写在前面

在维护的安卓的代码里有大量的submodel类型的子仓库,比如kernel,uboot,buildroot 这些都是子仓库,最直观的就是在目录下有大量的.git 文件夹,在上传服务器的时候, 如果把这些带.git的子文件夹传上去,下载的时候是空的, 这里提供两种方式

1 搭建repo方式,这个是正途,不用细说。
2 使用submodule方式,直接管理起子版本库。

其实我只是想做一下版本管理,将修改记录保存一下,正式环境有公司的提供的svn(不喜欢),所以我只用了简单的submodule的方式,目的只是版本管理,如果还有更新安卓源码的需求,还是老老实实的把repo弄起来吧,实际应用需要依情况而定。

一、 建立submodule

  1. 删除掉不想成为子版本库的.git
    find 查找当前,然后直接删除掉不想成为子版本库的.git文件夹,新建自己的git管理
    一定要删除 否则.git 加到管理里之后,上传到服务器上是空的

  2. 建立子仓库管理
    创建了主仓库之后,可以单独设置这些成为submodule。
    分两步
    1)可以创建多个版本库分别管理kernel uboot buildroot等 可以按自己经常修改的来划分子版本库。
    在这里插入图片描述
    例如我们现在的目录结构是这样的
    在这里插入图片描述

2 )子仓库添加我们自己服务器的远程分支

cd px30_linux
git remote add origin git@192.168.0.83:tengxingru/px30-linux.git #主版本库添加远程仓库

cd uboot 
git remote add origin git@192.168.0.83:tengxingru/px30-uboot.git #给uboot添加远程仓库

cd buildroot
git remote add origin git@192.168.0.83:tengxingru/px30-rootfs.git #给rootfs添加远程仓库

cd kernel
git remote add origin git@192.168.0.83:tengxingru/px30-kernel.git #给kernel添加远程仓库

3) 将子版本库添加至主版本库上

#初始化
cd px30_linux
//初始化主仓库
git remote add origin git@192.168.0.83:tengxingru/px30-linux.git

//初始化uboot子模块 ,相当于给u-boot目录添加一个仓库作为px30-linux的子模块
git submodule add git@192.168.0.83:tengxingru/px30-uboot.git u-boot/ 

//初始化kernel子模块 同上
git submodule add git@192.168.0.83:tengxingru/px30_kernel.git kernel

//初始化buildroot子模块 同上
git submodule add git@192.168.0.83:tengxingru/px30-rootfs.git buildroot

#上传
git commit -m "新建主版本库"
git push origin master

#更新
git submodule update
#更新子模块为远程项目的最新版本
git submodule update --remote

4)将剩余想管理的文件加进来
我并没有将所有的文件都加入管理,弄完之后,gogs上显示类似这样
在这里插入图片描述

二、使用submodule

1)Clone 包含子模块的项目
对于你的主仓库项目合作者来说,如果只是 git clone 去下载主仓库的内容,那么你会发现子模块仓库的文件夹内是空的!
此时,你可以像上面「添加子模块」中说到的使用 git submodule update --init --recursive 来递归的初始化并下载子模块仓库的内容。或者,跑到子模块目录下去 git pull 也是一样可以的。
也可以分初始化和更新子模块两步走的方式来下载子模块仓库的内容:

$ git submodule init	# 初始化子模块
$ git submodule update	# 更新子模块
 

但是,如果你是第一次使用 git clone 下载主仓库的所有项目内容的话,我建议你可以使用如下的代码格式来把主仓库和其中子模块的所有内容,都一步到位的下载下来:

git clone --recursive <project url>

主仓库项目的合作者并不会自动地看到子模块仓库的更新通知的。所以,更新子模块后一定要记得提醒一下主仓库项目的合作者git submodule update

三、给git本地仓库加入两个远程仓库

在实际开发过程中,如果需要同时使用到安卓的远程仓库和本地的远程仓库,直接添加上一个远程仓库就可以解决问题,示意图如
在这里插入图片描述

#模拟安卓的代码目录(或者别的git服务器)
git clone git@192.168.0.83:rk/px30_linux_sdk_release_v1.3.0_20200224.git

#模拟开发分支的代码目录(gogs服务器)
git remote add develop git@192.168.0.83:my_gogs/develop.git
git push -u develop master

                
     
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值