zoukankan      html  css  js  c++  java
  • Git submodule 仓库中包含另外的仓库(子仓库)

    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

    别人在父仓库里加了 submodule,这时候需要更新自己本地的父仓库的 submodule

    在父仓库目录下:

    git pull

    git submodule init

    git submodule update

    更新某个submodule:

    git submodule update -- [path]

    一次新 pull 所有的 submodule

    在父仓库目录下:

    git submodule foreach git pull origin master

    submodule push

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

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

     

     

     

  • 相关阅读:
    整除15问题
    软件工程基础Proposal提议
    对在大学阶段软件工程实践的一些想法
    运行web项目端口占用问题
    Day_1
    error C3615: constexpr 函数 "QAlgorithmsPrivate::qt_builtin_ctz" 不会生成常数表达式
    Qt应用程序的打包
    将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法
    linux部署html代码到linux服务器,并进行域名解析
    运行sudo apt-get install nginx时报错有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?解决
  • 原文地址:https://www.cnblogs.com/ibingshan/p/10238469.html
Copyright © 2011-2022 走看看