Git在已有的项目中引入Submodule子模块管理:添加、更新、删除(实战示例代码)

这篇具有很好参考价值的文章主要介绍了Git在已有的项目中引入Submodule子模块管理:添加、更新、删除(实战示例代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在进行Git版本控制的过程中,有时候我们需要在已有的项目中引入子模块,以便复用其他独立的Git存储库的代码或文件。本文将详细介绍如何在已有项目下添加、更新和删除Git的Submodule子模块,并提供相关的示例代码。

实战场景

假设我们已经有一个主项目(my-main-project)的Git存储库,并且需要在该项目中创建一个名为devices的文件夹,并引入两个子模块module1和module2。

一、添加子模块

首先,进入my-main-project目录,在命令行或终端中执行以下命令来添加子模块。其中,URL-to-module1URL-to-module2是指module1和module2的Git存储库的URL地址。

cd my-main-project
git submodule add <URL-to-module1> devices/module1
git submodule add <URL-to-module2> devices/module2

添加后,Git会自动为子模块创建一个独立的目录,并从远程仓库中克隆子模块的代码到这个目录中。

二、提交子模块

添加完子模块后,需要将这些修改提交到主项目的Git存储库中。执行以下命令:

git commit -m "Add submodule: module1 and module2"

这将把子模块的修改作为一个提交记录添加到主项目的版本历史中。
提交完不要忘了合并到主分支上,要不然其他项目开发人员更新不到子模块。这里LZ是master提交的子模块,所以pull最新的代码,push上去即可

git pull origin master
git push origin master

三、更新子模块

在其他开发人员克隆主项目之后,他们需要执行一些额外的步骤来初始化和更新子模块。他们可以通过以下命令完成初始化和更新子模块:

git submodule init
git submodule update

这将初始化子模块并将其拉取到本地。

四、删除子模块

在某些情况下,我们可能需要删除不再需要的子模块。要删除子模块,可以执行以下步骤:

  1. 删除主项目的.gitmodules文件中子模块的相关条目,删除所有的子模块的话,整个.gitmodules文件删掉即可,否则会报错。
  2. 删除主项目的.git/config 删除配置项中子模块相关条目。
  3. 删除主项目的.git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可
  4. 删除子模块的目录及其内容。在以上的示例中,删除devices文件夹下要删除的子模块目录,如果删除所有子模块,那整个文件夹都删除。
  5. 执行1-4步骤后,再执行添加子模块命令时候,如果仍然报错,执行如下命令删除暂存区下主项目的.git目录中与子模块相关的条目
#删除主项目的.git目录中与子模块相关的条目:git rm --cached 子模块名称
git rm --cached devices/module1
git rm --cached devices/module2

再次提交这些修改:

git commit -m "Remove submodule: module1 and module2"

这样就可以彻底删除主项目中的子模块,提交完不要忘了合并到主分支上。

五、注意事项

在使用Git的Submodule子模块时,请注意以下事项:

  • 子模块的修改不会自动反映到主项目中。如果需要引入子模块的新版本,需要手动更新子模块。
  • 不要直接在子模块目录中进行修改和提交,应该进入子模块的目录,在子模块的上下文中进行修改和提交。
  • 克隆主项目时,如果子模块的URL是使用SSH协议的,而且你缺乏对应的SSH密钥,那么克隆可能会失败。这时候,你可以使用HTTPS协议的URL来克隆主项目。

总结

在本文中,LZ讲解了我们如何在已有的Git项目中添加、提交、更新和删除Submodule子模块。使用示例代码演示了在已有项目中添加devices文件夹,并引入两个子模块module1和module2的过程。还介绍了如何提交这些修改到主项目中,以及其他开发人员如何初始化和更新子模块。最后,我们学习了如何删除不再需要的子模块。文章来源地址https://www.toymoban.com/news/detail-722702.html

到了这里,关于Git在已有的项目中引入Submodule子模块管理:添加、更新、删除(实战示例代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用 git submodule 删除子模块?

    删除 Git 子模块(submodule)需要进行一系列的步骤。下面是如何做的详细步骤: 从 .gitmodules 文件中删除子模块的相关条目。 请将 submodule_name 替换为您要删除的子模块的名称。 从 .git/config 文件中删除子模块的相关条目。 同样地,将 submodule_name 替换为您要删除的子模块的名称

    2024年02月10日
    浏览(43)
  • git submodule 子模块的基本使用

    命令 说明 git submodule add url 本地路径 添加子模块 git submodule update --init --recursive 添加子模块后,同步子模块内容 git clone url --recurse-submodules 克隆带有子模块的项目 git submodule init 初始化子模块 git submodule update 更新子模块 git submodule sync --recursive 子模块地址变更 git submodule dein

    2024年02月09日
    浏览(29)
  • Git系列文章目录 - Git 子模块git submodule使用

    项目中有时会遇到会涉及子模块的使用,比如 flatpak 项目包含多个子模块。 进入需要添加子模块的目录,一般是项目根目录。 删除子模块目录及源码: 删除项目目录下.gitmodules文件中子模块相关条目: 删除配置项中子模块相关条目: 删除模块下的子模块目录: 清除子模块

    2024年01月20日
    浏览(42)
  • Unity Git项目添加子模块

    git submodule add https://github.com/xxx/child.git git status git submodule update --remote git pull --recurse-submodules 这样你可以更清楚的看到自己子库关联状态

    2024年02月14日
    浏览(36)
  • yarn包管理器在添加、更新、删除模块时,在项目中是如何体现的

    技术很久不用,就变得生疏起来。对npm深受其害,决定对yarn再整理一遍。 yarn官网:https://yarn.bootcss.com,学任何技术的最新知识,都可以通过其对应的网站了解。无法直接访问,那就只能科学上网了。 –global 或 -g选项很重要,表示全局安装,后期本机各个项目都得用这个包

    2024年01月18日
    浏览(37)
  • git 将本地已有的一个项目上传到新建的git仓库的方法

    将本地已有的一个非git项目上传到新建的git仓库的方法一共有两种 第一种方法比较简单,直接用把远程仓库拉到本地,然后再把自己本地的项目拷贝到仓库中去。然后push到远程仓库上去即可。 此方法适用于本地项目不是一个git仓库的情况。 具体步骤如下: 1、首先克隆 1

    2024年02月04日
    浏览(42)
  • xxl-job定时任务配置应用以及添加到自己已有的springboot项目中实现动态API调用

    XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 本篇文章主要是对xuxueli的xxl-job做一个简单的配置,以及将其添加到自己已有的项目中进行api调用。 一、xxl-job安装 1、首先

    2024年02月03日
    浏览(30)
  • vue3 vite直接创建项目 添加 element-ui 按需引入和全部引入

     创建home 工程 yran dev就可以看到一个网址 点进去就可以看到效果了 添加element-ui 之前的main.js 修改后的 element-plus 在vue3中的按需引入。要比2简介很多 。自动导入也是推荐的一种写法 我们注释掉全局引用  然后改为按需引入 源文件  修改后 首先安装两款插件 修改后

    2024年02月17日
    浏览(48)
  • SpringBoot有的时候引入依赖为什么不用加版本号

    有的小伙伴做项目时候,引入新的包时候,会有疑问,为什么有些依赖需要加版本号,有些依赖不需要加版本号?不加版本号的依赖,版本号都写在哪里了呢? 内置的依赖可以不加版本号 这是因为SpringBoot内置了很多依赖,引入这些内置的依赖时不需要加版本号,相反,如果

    2024年01月19日
    浏览(50)
  • 解决github无法拉取submodule子模块的问题

    当使用 git clone --recursive url 拉取一个配置了子模块的仓库后,会卡住。 同时在使用 git clone 拉去 https 的 url 时,同样可能会出现一直卡在 cloning into reposity... 本文提供一个简单的脚本来解决该问题。 需要配置好 git 的相关配置, git user.name , git user.email , ssh 。 以 mxnet 的仓库

    2024年02月13日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包