• git submodule 实战


    1.git submodule指什么

    关于git submodule是什么,可以看下面这个链接。

    https://www.cnblogs.com/hwx0000/p/14146838.html

    2.git submodule init做了什么

    当我们git clone某一个git之后,在主目录下会有如下一个文件夹.git和文件.gitmodules(如果父仓下含有子仓)

    打开.gitmodules文件,可以看到父仓下所包含的所有的子仓库的信息,一般会有子仓名字,挂载路径,下载地址,有时也会写上branch。

    .gitmodules是我们git clone父仓的时候下载下来的,是父仓的文件。

    下面开始获取子仓的代码,在主目录下执行git submodule init,会发现在.git文件夹下多了config

    config的内容如下,可以发现git submodule init的作用就是将.gitmodules的内容复制一份到config,只不过其中path变成了active属性。

    同样一份信息保存两份,有必要吗,当然有必要。

    因为我们有时候可能不需要clone所有的子仓,这时我们就可以对config文件进行手动的修改,不clone某些子仓的代码

     

    比起手动修改config文件带来的不规范性,我们可以多次使用命令git submodule init   来添加需要clone的子仓。

    当然这时还是没有子仓的代码,下面进入git submodule update。

    参考:https://stackoverflow.com/questions/44366417/what-is-the-point-of-git-submodule-init

    3.git submodule update

    完成上步骤选定需要clone的子仓之后,在主目录下运行git submodule update即可以clone那些上步骤中选定的子仓。

    4.当子仓含有子仓

    在完成步骤3之后,我们子仓的文件都clone下来了,不过子仓的子仓的代码还是没有,怎么办

    方法同上,找到某一个子仓的主目录,可以发现下面从空文件夹,变成如下,并且多了.gitmodules,这表明这个子仓仍然是包含子仓。

    在这个路径下运行git submodule init和 git submodule update,就可以clone下来子仓的子仓的代码。

    那这里执行完git submodule init之后生成的config放在哪里呢,见下图

    5.思考

    有点感觉这个过程实在是有点麻烦,幸好项目中包含子仓的子仓只有两个,不多,可以手动的cd到那个文件夹,然后执行git submodule init + update。

    我以前并不是这么做的,直接在图形化界面smartgit里面输入父仓的git地址,自动就会帮我把子仓的代码也clone下来,非常方便,不过这次遇到了一个问题

    我多次实验发现,smartgit总是提示我下图,一直在clone某个子仓,虽然我一直点击“等待”,仍然不能clone成功。目前推测原因应该是这个子仓特别大,大就会导致时间长,而smartgit时间非常长后,大概8个小时这个级别,好像就会clone不下来,

    这时就得只能直接用命令行了。

     

     

  • 相关阅读:
    git初步使用
    1688阿里巴巴官方开放平台API接口获取商品详情、商品规格信息列表、价格、宝贝详情数据调用示例说明
    关于#matlab#的问题:我看到了gp-ols算法,请问gp我可以理解为是线性拟合吗,还是利用树结构寻优
    百万级别或以上的数据如何删除
    【JUC】读写锁
    Linux的firewalld防火墙学习笔记220929
    近世代数——Part1 课后题目
    机器学习入门案例(2)之使用逻辑回归预测房子是否能被租出去
    Pytorch 入门
    解决VSCODE 终端中显示中文乱码的问题
  • 原文地址:https://www.cnblogs.com/midhillzhou/p/16585707.html