新闻详情

新闻详情

首页 / 资讯中心 / 详情

【2018-11-10】【转】Git Submodule管理项目子模块

发布时间:2026/11/15 1:07:49来源:尧图网络
【2018-11-10】【转】Git Submodule管理项目子模块
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2018-11-10 标题【转】Git Submodule管理项目子模块分类编程 标签gitGit submodules简单笔记使用场景常用命令如何使用1. 创建带子模块的版本库2. 克隆带子模块的版本库3. 修改子模块4. 更新子模块5. 删除子模块本文转自 https://www.cnblogs.com/nicksheng/p/6201711.html使用场景当项目越来越庞大之后不可避免的要拆分成多个子模块我们希望各个子模块有独立的版本管理并且由专门的人去维护这时候我们就要用到git的submodule功能。常用命令git clone --recursive 递归的方式克隆整个项目git submodule add添加子模块git submodule init 初始化子模块git submodule update 更新子模块git submodule foreach git pull 拉取所有子模块如何使用1. 创建带子模块的版本库例如我们要创建如下结构的项目project|–moduleA|–readme.txt创建project版本库并提交readme.txt文件git init --bare project.gitgit clone project.git project1cd project1echo “This is a project.” readme.txtgit add .git commit -m “add readme.txt”git push origin mastercd …创建moduleA版本库并提交a.txt文件git init --bare moduleA.gitgit clone moduleA.git moduleA1cd moduleA1echo “This is a submodule.” a.txtgit add .git commit -m “add a.txt”git push origin mastercd …在project项目中引入子模块moduleA并提交子模块信息cd project1git submodule add …/moduleA.git moduleAgit statusgit diffgit add .git commit -m “add submodule”git push origin mastercd …使用git status可以看到多了两个需要提交的文件其中.gitmodules指定submodule的主要信息包括子模块的路径和地址信息moduleA指定了子模块的commit id使用git diff可以看到这两项的内容。这里需要指出父项目的git并不会记录submodule的文件变动它是按照commit id指定submodule的git header所以.gitmodules和moduleA这两项是需要提交到父项目的远程仓库的。On branch masterYour branch is up-to-date with ‘origin/master’.Changes to be committed:(use “git reset HEAD …” to unstage)new file: .gitmodulesnew file: moduleA2. 克隆带子模块的版本库方法一先clone父项目再初始化submodule最后更新submodule初始化只需要做一次之后每次只需要直接update就可以了需要注意submodule默认是不在任何分支上的它指向父项目存储的submodule commit id。git clone project.git project2cd project2git submodule initgit submodule updatecd …方法二采用递归参数–recursive需要注意同样submodule默认是不在任何分支上的它指向父项目存储的submodule commit id。git clone project.git project3 --recursive3. 修改子模块修改子模块之后只对子模块的版本库产生影响对父项目的版本库不会产生任何影响如果父项目需要用到最新的子模块代码我们需要更新父项目中submodule commit id默认的我们使用git status就可以看到父项目中submodule commit id已经改变了我们只需要再次提交就可以了。cd project1/moduleAgit branchecho “This is a submodule.” b.txtgit add .git commit -m “add b.txt”git push origin mastercd …git statusgit diffgit add .git commit -m “update submodule add b.txt”git push origin mastercd …4. 更新子模块更新子模块的时候要注意子模块的分支默认不是master。方法一先pull父项目然后执行git submodule update注意moduleA的分支始终不是master。cd project2git pullgit submodule updatecd …方法二先进入子模块然后切换到需要的分支这里是master分支然后对子模块pull这种方法会改变子模块的分支。cd project3/moduleAgit checkout mastercd …git submodule foreach git pullcd …5. 删除子模块网上有好多用的是下面这种方法git rm --cached moduleArm -rf moduleArm .gitmodulesvim .git/config删除submodule相关的内容例如下面的内容url /Users/nick/dev/nick-doc/testGitSubmodule/moduleA.git然后提交到远程服务器git add .git commit -m “remove submodule”但是我自己本地实验的时候发现用下面的方式也可以服务器记录的是.gitmodules和moduleA本地只要用git的删除命令删除moduleA再用git status查看状态就会发现.gitmodules和moduleA这两项都已经改变了至于.git/config仍会记录submodule信息但是本地使用也没发现有什么影响如果重新从服务器克隆则.git/config中不会有submodule信息。git rm moduleAgit statusgit commit -m “remove submodule”git push origin master
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/14 3:51:47

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/14 3:51:43

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉