• git submodule 操作


    git submodule 操作

    项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率。使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可。

    • 想要在一个工程中使用另一个工程,但是那个工程包含了单独的提交记录,submodule 就可以实现在一个工程中引入另一个工程,同时保留二者的提交记录并且区分开来;目前 submodule 还能实现单独开发子工程,并且不会影响父工程,父工程可以在需要的时候更新子模块的版本;
    • 想要把一个工程拆分成多个仓库并进行集中管理,这可以用来实现 git 当前的限制,实现更细粒度的访问,解决当仓库过于庞大时所出现的传输量大、提交记录冗杂、权限分设等问题;

    添加 Submodule

    git submodule add <repo> [<dir>] [-b <branch>] [<path>]
    
    # 其中,url为子模块的路径,path为该子模块存储的目录路径。
    # 执行成功后,git status会看到项目中修改了.gitmodules,并增加了一个新文件(为刚刚添加的路径)
    # .gitmodules文件:保存项目 URL 与已经拉取的本地目录之间的映射,有多个子模块则含有多条记录,会随着版本控制一起被拉去和推送的。
    

    示例:

    cd yourProject
    git submodule add https://github.com/imtianx/liba.git
    

    删除改子模块

    1. 删除子模块文件夹
    $ git rm --cached assets
    $ rm -rf assets
    
    2. 删除.gitmodules文件中相关子模块信息
    [submodule "assets"]
      path = assets
      url = https://github.com/maonx/vimwiki-assets.git
    
    3. 删除.git/config中的相关子模块信息
    [submodule "assets"]
      url = https://github.com/maonx/vimwiki-assets.git
      
    4. 删除.git文件夹中的相关子模块文件
    $ rm -rf .git/modules/assets
    
    

    修改子模块
    在子模块中修改文件后,直接提交到远程项目分支。

    $ git add .
    $ git ci -m "commit"
    $ git push origin HEAD:master
    

    更新子模块

    进入到子模块目录下,执行 git pull更新
    或者
    git submodule update
    
    

    查看子模块

    git submodule
    e33f854d3f51f5ebd771a68da05ad0371a3c0570 assets (heads/master)
    
  • 相关阅读:
    2015-01-21
    水文分析手册ArcHydro Tool 中文操作手册
    03018_监听器Listener
    元旦去峨眉山吧,人间值得
    常用Oracle SQL集锦
    结合公司现状浅谈CMDB
    CentOS7-Nginx编译安装
    Linux配置C++11编译环境
    Python实现通用web框架
    Python实现通用web框架
  • 原文地址:https://www.cnblogs.com/michaelcjl/p/16135545.html
Copyright © 2020-2023  润新知