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

git submodule的使用:将别人的git仓库作为自己的子仓库

  • git的基本操作在该篇中展示:git的基本操作
  • 在日常开发中,我们经常会碰到需要将别人的仓库作为自己的子仓库来进行开发。下面将介绍具体将如何操作。

1、添加Submodule至自己的git仓库

1.1、创建自己的Git仓库

(1)在github中创建自己的仓库。

(2)在终端将该仓库clone下来,并cd至该目录。

git clone xxx
cd xxx

1.2、添加子模块

(1)使用 git submodule add 命令添加子模块。

git submodule add <子模块 URL> <子模块目录>

# eg:将abc的子模块添加至我们的项目中
git submodule add htps://github.com/xxx/abc.git abc

1.3、提交并上传变更

输入以下指令提交并上传:

git commit -m "添加子模块 abc"
git push

2、Submodule的使用规则

2.1、子模块的版本控制

管理子模块的规则和主模块相同。

  • 克隆子模块
--init 选项:如果子模块尚未初始化,则将其初始化。
--recursive 选项:递归更新所有子模块,包括嵌套子模块。

每次使用时输入:

git submodule update --init --recursive

# 作用:
# 1、初始化所有未初始化的子模块。
# 2、更新所有子模块到最新提交。
# 3、递归更新所有嵌套子模块。
  • 更新子模块
git submodule update --recursive
  • 提交子模块变更
cd lib
git add .
git commit -m "更新子模块 lib"
cd ..
git submodule add lib
git commit -m "更新子模块版本"

2.2、子模块的分支管理

子模块可以独立进行分支管理。

  • 切换子模块分支:
git submodule checkout <分支名称>
  • 创建子模块分支:
git submodule branch <分支名称>
  • 合并子模块分支:
git submodule merge <分支名称>

3、更新Submodule

3.1、更新所有的子模块

git submodule update --recursive

3.2、更新指定子模块

git submodule update <子模块目录>

# eg:更新abc子模块
# git submodule update abc

3.3、单独更新子模块

使用 git fetchgit reset 单独更新子模块。

git fetch <子模块 URL>
git reset --hard <子模块版本>

例如,将 abc 子模块更新至 v1.0.0 版本:

git fetch https://github.com/user/abc.git
git reset --hard v1.0.0

4、合并Submodule

4.1、合并子模块变更

git submodule update --init --recursive
git add .
git commit -m "合并子模块变更"

4.2、解决冲突

如果遇到冲突,需要手动解决。

git submodule status
git submodule foreach git mergetool
git add .
git commit -m "解决子模块冲突"

5、子模块指针用法

我们可以使用子模块指针来指定子模块的特定版本。

git submodule add --depth 1 https://github.com/user/lib.git lib
git submodule update --init --recursive

6、子模块克隆

我们也可以单独克隆子模块至单独目录中。

git submodule clone https://github.com/user/lib.git lib

7、删除子模块

git submodule deinit abc
git rm -rf abc


http://www.kler.cn/a/467325.html

相关文章:

  • uniapp3 手写签名组件(vue3 语法)封装与应用
  • DVWA靶场Insecure CAPTCHA(不安全验证)漏洞所有级别通关教程及源码审计
  • 《Android最全面试题-Offer直通车》目录
  • 喜报|富唯智能荣获暨2024年广州科技创新创业大赛二等奖
  • 3、蓝牙打印机按键 - GPIO输入控制
  • 【算法应用】基于麻雀搜索算法求解Renyi熵图像多阈值分割问题
  • 告别Kibana:Elasticsearch 桌面客户端的新变革
  • 基于STM32F103的语音控制模块的应用(实现语音控制小灯开关)
  • 机器学习之过采样和下采样调整不均衡样本的逻辑回归模型
  • 常见中间件漏洞(tomcat,weblogic,jboss,apache)
  • 【管道——二分+区间合并】
  • .Net加密与Java互通
  • Ubuntu静态IP地址
  • HTML——78. 图像地图
  • 【AWS SDK PHP】This operation requests `sigv4a` auth schemes 问题处理
  • 常见的 MySQL 性能问题
  • 框架Tensorflow2
  • 《Rust权威指南》学习笔记(四)
  • Elasticsearch:Lucene 2024 年回顾
  • 豆包 MarsCode 编程助手之Visual Studio Code快速开始教程