Git submodule 仓库中包含另外的仓库(子仓库)

添加 submodule

在父仓库 git 目录下:

git submodule add ssh://ip/[path]/xxx.git

注意:不要在ip前加username@,例如:git submodule add ssh://username@ip/[path]/xxx.git,这样的话你就得把密码告诉别人了,如果不加username,那么会用git config 中的user去登陆

在父仓库添加 submodule 的时候,会让你输入密码把 submodule 的内容拷贝下来,但是如果clone一个带有 submodule 的的仓库,那么 submodule 的文件夹内没有任何内容,具体操作看“clone一个带有submodule的仓库

父仓库的变化:

1 新增了子仓库的内容文件夹

2 新增(如果之前没有).gitmodules

.git/config中增加了section:

[submodule "modulename"]

3 .git/modules中增加了module的文件夹,里面有所有自仓库的git信息文件夹

第一次 clone 一个带有 submodule 的仓库

方式一

git clone ssh://ip/[path]/topRepository.git                 不带任何参数,假设topRepository.git带有submodule,那么这些submodule的文件夹里面是空的

cd topRepository                                                      进入父仓库

git submodule                                                          可以看到submodule信息前有个减号'-'

git submodule init                                           第一次不带参数克隆需要初始化

git submodule update                                          这样就会把submodule的内容clone下来

git submodule foreach git checkout master               注意:update 后的 submodule 会被 checkout 到 head 的 commit id 上,并不会自动checkout 到 master 分支,所以这行是在所有的 submodule 中 checkout master

方式二

git clone ssh://ip/[path]/topRepository.git --recursive    这种方式会在克隆父仓库的同时克隆submodule

cd topRepository                                                          进入父仓库

git submodule                                                               可以看到submodule信息前没有减号'-'

git submodule foreach git checkout master                  注意:update 后的 submodule 会被 checkout 到 head 的 commit id 上,并不会自动checkout 到 master 分支,所以这行是在所有的 submodule 中 checkout master

如果 submodule 中还带有 submodule,那么可以是用 --recursive 参数

父仓库有新的 submodule 添加,或者 submodule 有新的 commit

在父仓库目录下:

git pull

git submodule init

git submodule update

一次新 pull 所有的 submodule

在父仓库目录下:

git submodule foreach git pull origin master

submodule push

先在 submodule 的目录下 push  这是单独更新 submodule 的内容

然后在父仓库的目录下push    这是更新父仓库的 submodule 信息

Git submodule 仓库中包含另外的仓库(子仓库)的更多相关文章

  1. Java模拟生产者-消费者问题。生产者不断的往仓库中存放产品,消费者从仓库中消费产品。其中生产者和消费者都可以有若干个。在这里,生产者是一个线程,消费者是一个线程。仓库容量有限,只有库满时生产者不能存

    需求分析:生产者生产产品,存放在仓库里,消费者从仓库里消费产品. 程序分析: 1.生产者仅仅在仓储未满时候生产,仓满则停止生产. 2.消费者仅仅在仓储有产品时候才能消费,仓空则等待. 3.当消费者发现 ...

  2. Git_添加、删除远端仓库中的文件

    一.将文件添加到远端仓库 1.新增文件 2.使用git add 将文件添加到本地缓存中 3.使用git commit 将文件添加到本地仓库中 4.使用git push 将本地仓库中的修改同步到远端仓库 ...

  3. Git 子模块:git submodule

    imtianx 2018年03月08日阅读 2057 Git 子模块:git submodule 工作中,可能会遇到在一个Git仓库 中添加 其他 Git 仓库的场景.比如,在项目中引用第三方库.或者 ...

  4. git submodule 使用小结

    git submodule 使用小结 原文链接 http://blog.gezhiqiang.com/2017/03/08/git-submodule/###### Git Submodule 允许一 ...

  5. git submodule 实战

    1.git submodule指什么 关于git submodule是什么,可以看下面这个链接. https://www.cnblogs.com/hwx0000/p/14146838.html 2.g ...

  6. git submodule添加、更新和删除

    添加 git submodule add <url> <path> url:替换为自己要引入的子模块仓库地址 path:要存放的本地路径 执行添加命令成功后,可以在当前路径中看 ...

  7. 如何将现有 git 仓库中的子项目单独抽出来作为一个独立仓库并保留其提交历史

    很多时候,我们会遇到在一个git仓库下包含了很多小项目,但是随着有些项目的需求逐渐增大或则市场需求,我们需要将其抽离出来,作为一个单独的项目进行维护并开发. 但是,如果直接拷贝文件粘贴到新建的git ...

  8. 如何删除GIT仓库中的敏感信息

    如何删除GIT仓库中的敏感信息 正常Git仓库中应该尽量不包含数据库连接/AWS帐号/巨大二进制文件,否则一旦泄漏到Github,这些非常敏感信息会影响客户的信息安全已经公司的信誉.公司可能其它还有相 ...

  9. 使用Sparse Checkout 排除跟踪Git仓库中指定的目录或文件

    应用场景 在一个大工程里包含由不同部门开发的模块时,项目的Git仓库肯定很大,造成每次Git操作相对比较耗时.因为开发人员一般只关心他们部门的模块的代码,所以完全可以排除一些他完全不需要用到的目录.这 ...

随机推荐

  1. VUE 多页面配置(一)

    1. 概述 1.1 说明 项目开发过程中会遇到需要多个主页展示情况,故在vue单页面的基础上进行配置多页面开发以满足此需求. 2. 实例 2.1 页面配置 2.1.1 默认首页 使用vue脚手架搭建后 ...

  2. VUE 图片验证码

    1. 概述 1.1 说明 在开发过程中,有时候需要使用图片验证码进行增加安全强度,在点击图片时更新新的图片验证码,记录此功能,以便后期使用. 2. 示例 2.1 vue示例代码 <templat ...

  3. linux命令排序

    sort -k1 -n 第一列按数字正排序 sort -K1 -rn 第一列按数字倒排序

  4. Oracle 网络监听配置管理

    Oracle 网络配置与管理 详细信息可以参考以下信息: [学习目标] 一.原理解析 二.配置侦听器(LISTENER) 三.配置客户端网络服务名 四.关于注册 五.查询某服务是静态还是动态注册 Or ...

  5. Pod 找不到头文件 解决方法

    在 BuildSetting 中 搜索 User Header Search Paths 然后在下面 User Header Search Paths 中添加 ${SRCROOT}  再将后面参数改为 ...

  6. Redis扩展

    Redis扩展下载地址:https://windows.php.net/downloads/pecl/releases/redis/ PHP怎么安装redis扩展 http://www.php.cn/ ...

  7. Linux基础一:Linux的安装及相关配置

    1. 计算机操作系统简介    1) 操作系统的定义:操作系统是一个用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间.    2) 操作系统的内核的定义:操作系统的内核是一 ...

  8. python进行进制转换

    # 10进制转为2进制 print(bin(10)) # 结果:0b1010 # 2进制转为10进制 print(int("1001", 2)) # 结果:9 # 10进制转为16 ...

  9. Appium 常用方法总结 (python 版)

    1.app后台运行 driver.background_app(5) 2.锁屏 driver.lock(5) 3.隐藏键盘 driver.hide_keyboard() 4.启动一个app或者在当前a ...

  10. python 自动获取手机短信验证码

    需要一个有权限的 APK 在手机实时存储短信到手机内存 /sdcard/smslog.txt 里(外部SD卡也可以知道能通过adb命令访问到): /***** ...... try {long tim ...