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

[每周一更]-(第103期):GIT初始化子模块

在这里插入图片描述

文章目录

      • 初始化和更新所有子模块
      • 分步骤操作
        • 1. 克隆包含子模块的仓库
        • 2. 初始化子模块
        • 3. 更新子模块
      • 查看子模块状态
      • 提交子模块的更改
      • 处理子模块路径错误的问题

该问题的缘由是因为:在写某些代码的时候,仓库中有些文件夹,只提交了文件夹名称到git仓库中,但是发现该文件夹下的文件没有在git中记录到,才发现有此类问题;

常规操作一下可以解决:(如果存在其他情况就类似)

 git rm --cached directorygit add directory

如果想确定其他项目中是否有类似问题,可以进行如下命令验证;

报错如下的话:fatal: No url found for submodule path ‘study-go/jike/101’ in .gitmodules,那就是有问题了,需要具体文件排查;一般是因为引入了其他有.git记录的子项目引起的,删除对应的.git,并删除缓存,再添加即可;

如果看具体仓库终会有如下展示文件夹(表示101该文件夹下的文件都没有被仓库记录下来,并且只能找原来物理存储的101文件夹内容,并处理,如果找不到那就是文件丢失了~~,找原仓库即可):

 101 @ 212851b

要初始化和更新所有子模块,可以使用以下Git命令。这些命令将确保所有子模块被正确初始化并更新到最新版本。

初始化和更新所有子模块

  1. 初始化所有子模块

    首次克隆包含子模块的仓库后,需要初始化子模块。这一步会读取 .gitmodules 文件中的配置,并在相应路径初始化子模块。

    git submodule update --init --recursive
    
  2. 更新所有子模块

    更新子模块到它们各自的最新提交状态:

    git submodule update --recursive --remote
    

分步骤操作

1. 克隆包含子模块的仓库

当你克隆一个包含子模块的仓库时,需要使用 --recurse-submodules 选项,这样在克隆主仓库的同时会自动初始化和更新子模块。


git clone --recurse-submodules <repository-url>

如果你已经克隆了仓库而没有使用 --recurse-submodules 选项,可以手动初始化和更新子模块。

2. 初始化子模块

在已经克隆的仓库目录中,运行以下命令初始化子模块:


git submodule update --init --recursive

这条命令会递归地初始化所有子模块及其嵌套的子模块。

3. 更新子模块

为了确保所有子模块都更新到最新的提交,可以使用以下命令:


git submodule update --recursive --remote

这条命令会更新所有子模块及其嵌套子模块到它们各自的最新提交状态。

查看子模块状态

要查看所有子模块的状态,可以使用 git submodule status 命令:


git submodule status

这条命令会显示子模块的当前提交哈希值和路径。

提交子模块的更改

如果你在子模块中进行了更改,需要在子模块目录中提交这些更改,然后在主仓库中更新子模块的引用。

  1. 进入子模块目录并提交更改

    
    cd path/to/submodule
    git add .
    git commit -m "Commit message for submodule changes"
    git push
    cd -
    
  2. 在主仓库中更新子模块引用

    
    git add path/to/submodule
    git commit -m "Update submodule reference"
    git push
    

处理子模块路径错误的问题

如果你遇到子模块路径错误,例如 fatal: no submodule mapping found in .gitmodules for path 'path/to/submodule',可以通过以下步骤解决:

  1. 编辑 .gitmodules 文件

    确保 .gitmodules 文件中包含所有子模块的正确配置信息。

    
    [submodule "path/to/submodule"]path = path/to/submoduleurl = <submodule-repository-url>
    
  2. 添加子模块配置到 .gitmodules

    如果 .gitmodules 文件中缺少子模块配置,可以手动添加:

    
    git submodule add <submodule-repository-url> path/to/submodule
    
  3. 重新初始化和更新子模块

    
    git submodule update --init --recursive
    
http://www.lryc.cn/news/386596.html

相关文章:

  • 单例模式---线程安全实现
  • Agent技术在现代软件开发与应用中的探索
  • c语言中extern定义和引用其他文件的变量,(sublime text)单独一个文件编译不会成功
  • 时序数据中的孤立野点、异常值识别及处理方法
  • JetBrains PyCharm 2024 mac/win版编程艺术,智慧新篇
  • MCU解决800V电动汽车牵引逆变器的常见设计挑战的3种方式
  • 《逆向投资 邓普顿的长赢投资法》
  • C++中main函数的参数、返回值分别什么意思?main函数返回值跟普通函数返回值一样吗?
  • Java程序员学习Go开发Higress的WASM插件
  • Python入门-基本数据类型-数字类型
  • 小程序web-view无法打开该页面的解决方法
  • 海外媒体发稿:媒体宣发套餐的作用分享-华媒舍
  • 【R语言】plot输出窗口大小的控制
  • 【shell脚本实战案例】数据磁盘初始化
  • 1.7 计算机体系结构分类
  • 数据结构之B树:深入了解与应用
  • Tensorflow入门实战 T06-Vgg16 明星识别
  • SpringBoot 3.3.1 + Minio 实现极速上传和预览模式
  • Linux: network: 丢包分析的另一个途径 tracing
  • 【保姆级教程+配置源码】在VScode配置C/C++环境
  • Qt creator实现一个简单计算器
  • Java代码基础算法练习-计算被 3 或 5 整除数之和-2024.06.29
  • Socket编程详解(二)核心代码讲解
  • (项目实战)聚合支付系统开发环境搭建-基于VMware17安装Centos7.9
  • Python现在可以在线编程了!
  • ThreadPoolExecutor线程池创建线程
  • 畅谈GPT-5
  • 石家庄高校大学智能制造实验室数字孪生可视化系统平台项目验收
  • WLAN 4-Way Handshake如何生成GTK?
  • Qt/C++模拟鼠标键盘输入