当前位置: 首页 > news >正文

git子模块--常见操作

克隆仓库

标准化克隆流程
  • 基本命令
    git clone <父仓库远程URL> [本地文件名]
    cd <本地仓库名>
    git submodule init   # 初始化子模块配置
    git submodule update # 拉取子模块内容
    
一次性完成克隆和初始化流程
  • 基本命令
    git clone --recurse-submodules <父仓库远程URL> [本地文件名]
    
其他克隆流程
  • 基本命令
    git clone <远程仓库URL> [本地文件名]
    cd <本地仓库名>
    git submodule update --init --recursive
    

添加子模块配置

标准化添加流程
  • 添加仓库命令
    git submodule add <子目录远程仓库URL> [子模块名]
    # 例:
    git submodule add $(cd blog && git remote get-url origin) blog # 将blog这个模块作为子模块添加到当前git仓库中;使用 git remote get-url <本地仓库名>
    
  • 成功添加后的表现
    • 生产或修改.gitmodules文件,若已有此文件,则直接写入新增的子模块配置,否则新建一个名为.gitmodules的文件并写入第一关配置
    • 提交时,子模块以特殊模式(160000)记录,表示其指向某个具体提交而非普通文件。

移除子模块配置

标准化写在流程
  • 命令行卸载子模块
    git submodule deinit <子模块的相对路径> # 在.git/config 和 .gitsubmodule中移除配置
    # 例:
    git submodule deinit "blog"
    
  • 删除子模块并暂存变更
    git rm <子模的相对块路径>
    
  • 清理残留文件:彻底删除子模块的Git缓存
    rm -rf .git/modules/<子模块名称>
    
  • 提交变更

修改子模块配置

更新子模块路径以及名称
  • 使用命令移动或重命名子模块目录
    git mv old/path new/path # 将旧的路由更名为新的路由
    
    执行完毕后.gitmodules中的路由配置信息会自动更新
    git config -f .gitmodules submodule.<submodule-neme>.path new/path # 如果没有自动更新可使用此命令更新,或手动编辑 .gitmodules 文件
    
  • 使用文件编辑器方式更新子模块名称
    vim .gitmodules # 使用任何编辑方式均可
    
    修改[submodule "<子模块名>"]中的配置
    [submodule "old-name"]  => [submodule "new-name"] # 将名称配置修改为新的名称(最好与路径字符串统一)
    path = <new/path>
    url = <URL保持不变>
    
  • 在其他地方使用最新的仓库
    git pull # 拉取最新内容,修改后的路径会以一个全新的文件夹的方式新增在这里
    rm -rf old/path # 移除掉以及被淘汰的旧路径
    git submodule update # 更新子模块内容,如果此命令无效可先输入 git submoduel init
    cd new/path
    git switch <目标分支> # 新克隆的子模块的分支处于游离状态,所以需呀切换到有效分支在做操作
    
更新子模块远程地址
  • 使用命令更新子模块路径
    git config -f .gitmodules submodule.<submodule-name>.url <new-url>
    
    自动更新.gitmodules文件中的呢日欧能够,或使用文本编辑系做如下修改
    [submodule "submodule-name"]
    path = <路径保持不变>
    url = <old-url> => url = <new-url> # 将URL配置修改为新的URL
    
  • 使用命令更新子模块
    git submodule update --remote
    
  • 在其他地方使用最新的仓库
    git pull # 拉取最新内容,修改后的路径会以一个全新的文件夹的方式新增在这里
    git submodule update # 更新子模块内容,如果此命令无效可先输入 git submoduel init
    
更新子模块内容,以及同步父模块
  • 从本地更新到远程
    cd path
    git add .
    git commit -m "<提交信息>"
    git pull [仓库名称] [目标分支] # 提交之前拉取一次最新版的远程仓库,防止提交冲突
    git push [仓库名称] [目标分支]
    cd <父仓库的根目录>
    git commit -am "更新子模块"
    git pull
    git push
    
  • 从远程更新到本地
    cd path
    git switch <分支名称>
    git pull [仓库名称] [目标分支]
    git submodule update --remote [--init] [--recursive] # 远程指令(必填)、初始化指令(选填)、递归指令(选填)
    

相关文章:

  • c++学习之---stack,queue
  • iOS App启动优化(冷启动、热启动)
  • uni-app学习笔记十二-vue3中创建组件
  • Python实战:轻松连接与高效操作Elasticsearch
  • 【大模型应用开发】Qwen2.5-VL-3B识别视频
  • 解决WPF短暂的白色闪烁(白色闪屏)
  • 免费开源 PDF 阅读器 自带虚拟打印机功能 多格式兼容
  • Acrobat 中 JavaScript 为 PDF 带来的交互
  • Java21 并发处理说明
  • 通过Auto平台与VScode搭建远程开发环境(以Stable Diffusion Web UI为例)
  • 【Python】1. 基础语法(1)
  • 棒球比赛暗号百科·棒球1号位
  • 在Mathematica中,使用鸟枪法求解在无穷远处的边值常微分方程
  • AI助力,制作视频裁剪软件
  • Spring Cloud Sleuth与Zipkin深度整合指南:微服务链路追踪实战
  • 大剧院订座系统源码,大剧院订票,大剧院场馆租赁,大剧院订票系统完整源码
  • Day 31 训练
  • PowerBI切片器美化
  • 深入解析Spring Boot与JUnit 5集成测试的最佳实践
  • 云原生安全基石:深度解析HTTPS协议(从原理到实战)
  • 南京谁做免费网站/推广普通话宣传语100字
  • 芗城区建设局网站/seo的定义是什么
  • 网站的在线支付模块怎么做/中国联通和腾讯
  • 服务器多少钱/优化防疫政策
  • 房地产新闻app哪个好/优化师的工作内容
  • 公司网站管理规定/seo优化教程自学网