zoukankan      html  css  js  c++  java
  • git 子模块 submodule

    导读

      git 子模块操作是 git 工具提供的关联和管理其它项目作为子模块的方式。在没有诸如 Visual Studio 提供的 Nuget 包管理工具时,可以方便不同项目代码分离和同步。

      本文梳理记录了个人使用 git 子模块 submodule 的常用指令,方便参考使用


    目录
    1. 添加一个 git 子模块
    2. 克隆一个袋子模块的项目
    3. 更换远端
    4. 删除子模块
    1、添加一个 git 子模块

    假设现在需要 把项目 B 作为子模块,添加到项目 A 中的子目录 folder 中,使用如下指令

    git submodule add

    项目 B 的 git 项目地址为 b, 则添加子模块如下

    添加一个子模块

    首先你要把外部的仓库克隆到你的子目录中。
    假设你想把 pacman项目加入到你的blog项目中,你通过git submodule add将外部项目加为子模块:

    cd blog
    git submodule add https://gitcafe.com/aceking/pacman.git themes/pacman

    .gitmodules文件: 这是一个配置文件,保存了项目 URL 和你拉取到的本地子目录。现在你就在项目里的themes/pacman子目录下有了一个 pacan项目。你可以进入那个子目录,进行变更,加入你自己的远程可写仓库来推送你的变更,从原始仓库拉取和归并等等。

    .gitmodule

     

     参考:http://www.linuxidc.com/Linux/2014-12/110771.htm

    2、克隆一个带子模块的项目

    克隆你刚才创建子模块的项目。你将得到了包含子项目的目录,但里面没有文件:pacman目录存在了,但是是空的。

    你必须运行两个命令:git submodule init来初始化你的本地配置文件,git submodule update来从那个项目拉取所有数据并检出你上层项目里所列的合适的提交。

    cd blog
    git submodule init themes/pacaman
    git submodule update

    现在你的pacman子目录就处于你先前提交的确切状态了。

    3、更换远端
     

    1、修改'.gitmodules'文件中对应模块的”url“属性;

    2、使用git submodule sync命令,将新的URL更新到文件.git/config;

    # 运行后可观察到'.git/config'中对应模块的url属性被更新
    git submodule sync 
    Synchronizing submodule url for 'gitmods/thinker_g/Helpers'
    # 提交变更
    git commit -am "Update submodule url."

    运行后可观察到'.git/config'中对应模块的url属性被更新 thinker-g@localhost: ~/app$ git commit -am "Update submodule url." # 提交变更

    PS: 本实验使用git 2.7.4 完成,较低版本git可能不能自动更新.git/config文件,需要修修改完".gitmodule"文件后手动修改.git/config. 

    参考:https://www.jianshu.com/p/ed0cb6c75e25

    4、删除子模块
     
    # 逆初始化模块,其中{MOD_NAME}为模块目录,执行后可发现模块目录被清空
    git submodule deinit {MOD_NAME} 
    # 删除.gitmodules中记录的模块信息(--cached选项清除.git/modules中的缓存) git rm --cached {MOD_NAME}

    # 在 .gitmodules 中删除 {MOD_NAME} 对应的项
    # 提交更改到代码库 git commit -am "Remove a submodule."

     

  • 相关阅读:
    WPF关于“在“System.Windows.Markup.StaticResourceHolder”上提供值时引发了异常。”问题解决办法
    未知的生成错误 因为没有预加载,所以无法解析程序集 GalaSoft.MvvmLight
    C#中的??是什么意思
    WIN10使用管理员权限运行VS2013
    路飞项目
    DRF
    Vue
    dsdffd
    python学习第45天
    python学习第44天
  • 原文地址:https://www.cnblogs.com/BensonLaur/p/13933175.html
Copyright © 2011-2022 走看看