git submodule

git submodule

git submodule 的作用是将一个 git 仓库,最为另一个 git 仓库的子模块

比如
A 仓库地址:git@github.com:xxxxxxx/A.git
B 仓库地址:git@github.com:xxxxxxx/B.git

一、克隆 A 仓库

打开拉取的 A 项目根目录
在 A 项目中添加 B 项目的 git 仓库,作为子模块,设置 B 项目在 A 项目中的路径是 A/client/Assets/B
打开命令行,执行命令

git submodule add git@github.com:xxxxxx/B.git client/Assets/B

A 项目目录下出现两个文件

.gitmobule
client/Assets/B

打开 .gitmodule 显示 三行信息

[submodule "client/Assets/B"]path = client/Assets/Burl = git@github.com:XXXXXX/B.git

这里一般默认使用 submodule 仓库 (B)的 master 或者 main 分支
如果想使用哪一个分支,添加 branch,修改如下

[submodule "client/Assets/B"]path = client/Assets/Burl = git@github.com:LIQIANGEASTSUN/B.gitbranch = master_sdk # 确保这里是 master_sdk 分支

在可视化 git 工具,如:SourceTree 上选择 client/Assets/B 可以看到 里边是一条指向 B 项目某一次提交的 commit
B 仓库作为 A 仓库的 submodule,此时 B 仓库并不是在哪个分支上,而是在 B 仓库的某一条提交
A 仓库只是在使用 B 仓库某一次提交的状态,具体细节可以自行查资料

二、初始化子模块,执行命令
git submodule init
三、更新 submodule,执行命令
git submodule update

git submodule update 命令会将子模块检出到父仓库中记录的提交
只有在明确地更新并提交了子模块的状态后,父仓库才会知道子模块现在指向的是最新的提交

要确保当前使用的 submodule 是最新的提交,递归的将所有子模块更新到远程仓库的最新提交
执行命令:

git submodule update --remote --recursive

如果只是想更新具体的 submodule 如 client/Assets/B,将 --recursive 替换为具体的 submodule 名
执行命令

git submodule update --remote client/Assets/B
四、提交子模块的更新

更新子模块后,需要将子模块的状态提交到父仓库,执行以下命令:

git add client/Assets/B
git commit -m "Update submodule to latest commit"
git push
五、查看 submodule 状态
git submodule status
输出:daddf8e4fe8b122128c63d69fd73fd031269285a client/Assets/B(heads/master_sdk)
六、已经克隆的项目更新 submodule

一个项目已经克隆到本地了,别人添加了一个 submodule 并提交,我们本地仓库需要更新,执行命令:

# 初始化和更新所有子模块
git submodule update --init --recursive

然后执行 三、四

七、克隆一个添加了 submodule 的仓库

执行命令

git clone --recurse-submodules git@github.com:XXXXX/A.git
git submodule update --init --recursive

执行 三 、四
如果克隆时没有添加 --recurse-submodules 克隆完成后,执行 二、三 、六、七

八、删除子模块
  1. 删除子模块的条目
    首先,从 .gitmodules 文件中删除子模块的相关配置
    打开 .gitmodules 文件,找到并删除与要移除的子模块相关的条目,如下
[submodule "client/Assets/B"]path = client/Assets/Burl = git@github.com:xxxxxx/B.gitbranch = master_sdk # 确保这里是 master_sdk 分支
  1. 删除子模块的配置
    接下来,从 Git 配置中删除子模块的条目。您可以使用以下命令:
git config --remove-section submodule.client/Assets/B

也可以打开 .git/config 文件手动删除,如下

[submodule "client/Assets/B"]active = trueurl = git@github.com:LIQIANGEASTSUN/B.git
  1. 删除子模块的目录 .git\modules\client\Assets\B 目录
rm -rf client/Assets/B
  1. 将这些更改提交到父仓库
git add .gitmodules
git commit -m "Remove submodule client/Assets/B"
git push
  1. 清理 Git 缓存(可选)
    如果希望完全清理 Git 的缓存,可以运行以下命令:
git rm --cached client/Assets/B
  1. 移除子模块
    首先,使用以下命令移除子模块:
    取消子模块的初始化
    git submodule deinit -f client/Assets/B

从工作目录和索引中移除子模块

git rm -f client/Assets/B

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Compose 实践与探索九 —— DrawModifier 解析

本篇讲解 DrawModifier 的基本用法与代码原理,介绍原理的目的在于可以判断绘制与绘制的关系,绘制与布局的关系。知道达成某种绘制效果应该怎么写,面对复杂的 Modifier 链时对效果有大致预判。 DrawModifier 管理绘制,需要以负责管…

华为手机助手输入连接码时光标乱跳

问题复现:输入12345678,光标自动跳转导致连接码出现乱序情况。 千万别试着找出规律,已试动态规律非大牛误轻试 问题原因: 想啥呢?华哥的软件又不是我开发我要Know Why干啥 我只需关心解决方案 (可能时输入…

《DeepSeek 开源 DeepGEMM:开启AI计算新时代的密钥》:此文为AI自动生成

《DeepSeek 开源 DeepGEMM:开启AI计算新时代的密钥》:此文为AI自动生成 引言:AI 计算的新曙光 在当今科技飞速发展的时代,人工智能(AI)无疑是最为耀眼的领域之一。从语音助手到自动驾驶,从图像…

Windows 11 安装Docker Desktop环境

1、确认CPU开启虚拟化 打开任务管理器,切换到“性能”选项卡,查看 CPU 信息。若“虚拟化”状态显示为“已启用”,则表示虚拟化已开启;若显示为“已禁用”,则需要在启动时进入 BIOS 开启虚拟化设置(若显示已…

STM32如何精准控制步进电机?

在工业自动化、机器人控制等场合,步进电机以其高精度、开环控制的特性得到了广泛应用。而在嵌入式系统中,使用STM32进行步进电机的精确控制,已成为开发者的首选方案之一。 本文将从嵌入式开发者的角度,深入探讨如何基于STM32 MCU…

【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JavaWeb 项目的部署:从开发环境到生产环境

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开发环境…

深度学习CNN特征提取与匹配

‌一、CNN特征提取核心方法‌ ‌基础网络架构‌ 使用卷积神经网络&#xff08;如ResNet、VGG、MobileNet&#xff09;提取多层特征图&#xff0c;通过卷积层自动学习图像的局部纹理、形状及语义信息‌。 ‌浅层特征‌&#xff1a;边缘、角点等低级特征&#xff08;Conv1-3&…

Vuex 高级技巧与最佳实践

使用 map 辅助函数简化代码&#xff1a; javascript import { mapState, mapGetters } from vuexexport default {computed: {...mapState([num]),...mapGetters([doubleNum])} }模块化开发&#xff1a; javascript // modules/student.js export default {namespaced: true,st…

算法题(98):大数加法

审题&#xff1a; 本题需要我们解决大数加法&#xff0c;大数直接运算会超出范围&#xff0c;所以我们需要转换成字符串一位位进行计算 思路&#xff1a; 方法一&#xff1a;高精度加法 我们将两个大数的每一个位分别计算&#xff0c;然后头插到answer字符串中即可 解题&#x…

C# Exe + Web 自动化 (BitComet 绿灯 自动化配置、设置)

BitComet GreenLight,内网黄灯转绿灯 (HighID), 增加p2p连接率提速下载-CSDN博客 前两天写个这个&#xff0c;每次开机关机后要重来一遍很麻烦的索性写个自动化。 先还是按照上面的教程自己制作一遍&#xff0c;留下Luck 以及 路由器相关的 端口记录信息。 &#xff08;因为自…

基于 Docker 搭建 FRP 内网穿透开源项目

有些配置项不知道该不该用,不知道该在哪用,不知道怎么用,所以我自己写个文章简单记录一下做个笔记 本文介绍的是基于 Docker 运行 frps 和 frpc,并通过 TCP 协议简单穿透 SSH 和 HTTP,在观看本文之前请确保你的机器已经安装 Docker 服务端搭建 frps# 连接拥有公网 IP 的…

python---序列 (str,list,tuple)

一、 序列类型入门 python的数据类型&#xff1a;int float bool str 运算符 - * / % > < and or not 流程控制ifelsewhilefor掌握python的2大容器类型数值类型&#xff08;3个&#xff09;&#xff1a;int float bool序列类型容器(3个)&#xff1a;str &#xff1a; …

CSS元素层叠顺序规则

CSS元素层叠顺序规则 看图说话总结: background/borderz-index(<0)blockfloatinline/inline-blockz-index(0,auto)z-index (>0)

删除有序数组中的重复项(26)

26. 删除有序数组中的重复项 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:int removeDuplicates(vector<int>& nums) {auto first nums.begin();auto last nums.end();auto result first;if (first last) {return std::…

Vue 概念、历史、发展和Vue简介

一、Vue概念 官方定义&#xff1a; 渐进式JavaScript 框架&#xff0c;易学易用&#xff0c;性能出色&#xff0c;适用场景丰富的 Web 前端框架。 Vue.js 是一个流行的前端JavaScript框架&#xff0c;由尤雨溪&#xff08;Evan You&#xff09;开发并维护。 它最初于2014年发…

ArcGIS Pro将有文字标注底图切换为无标注底图(在线地图图源)

今天介绍一下在ArcGIS Pro将有标注的地形底图换成无标注的底图。 大家在这项目底图时候会经常调用ArcGIS Pro自带的地形图&#xff0c;但是这个地形图自带是有注记的&#xff0c;如下图。 如何更改&#xff0c;才可以调用无文字注记的呢&#xff1f; 对于一个已经切好图的有注记…

Xxl-Job学习笔记

目录 概述 核心架构 核心特点 应用场景 什么是任务调度 快速入门 获取源码 初始化调度数据库 基本配置 数据源datasource 邮箱email&#xff08;可选&#xff09; 会话令牌access token 启动调度中心 启动执行器 依赖 yaml基本配置 XxlJobConfig类配置 定义执…

让双向链表不在云里雾里

又来博客留下我的足迹了&#xff0c;哈哈哈&#xff0c;这次是对于双向链表的理解 目录 创建双向链表&#xff1a; 申请结点&#xff1a; 双向链表初始化&#xff1a; 双向链表插入结点&#xff1a; 双向链表删除结点&#xff1a; 双向链表的打印&#xff1a; 双向链表…

java虚拟机(JVM)以及各种参数详解

Java 虚拟机&#xff08;JVM&#xff09;提供了许多参数来调整其行为和性能&#xff0c;以便更好地适应不同的应用场景。理解和使用这些参数对于优化 Java 应用程序的性能非常重要。以下是一些常用的 JVM 参数及其详细说明&#xff1a; 1. 内存管理参数 -Xms<size>&…

如何搭配 AI 量化策略选股

AI 量化选股策略结合了 技术指标、基本面数据、市场情绪&#xff0c;利用 机器学习、深度学习、因子分析 等方法&#xff0c;提高选股精准度和交易决策效率。下面介绍 如何搭配 AI 量化策略选股。 1. AI 量化选股的核心方法 AI 量化选股主要依靠 数据驱动&#xff0c;包括&…