Git子模块使用教程

Git子模块

1. 问题背景

​ 随着产品的日益增多,各个产品之间的业务功能会出现高度的相同性,比如产品A有串口的接收功能,产品B也有相同的串口功能,这类功能我们可以写成一个通用的串口接收模块。这样就可以避免每个产品都copy一遍代码,造成了大量的代码冗余,且后续修改也要挨个进行一遍,所以本文我们引入git 子模块的概念,就可以很好的解决这个问题。

​ Git 通过子模块来解决这个问题,子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录,它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。

​ 子模块学习参考如下链接:https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97

2.子模块的拉取和同步修改

2.1. clone含有子模块的项目

  • 方式一

    • 克隆主仓库:url为主仓库的地址

      git clone url

    • 初始化本地配置文件

      git submodule init

    • 从该项目中抓取所有数据并检出父项目中列出的合适的提交

      git submodule update

    • 将 git submodule init 和 git submodule update 合并成一步

      git submodule update --init

  • 方式二

    克隆并更新仓库中的每一个子模块,包括可能存在的嵌套子模块

git clone --recurse-submodules url

说明:克隆下来的项目,子模块留在一个称作“游离的 HEAD”的状态。

2.2. 同步子模块的更改

  • 方式一

    进入子模块的目录下,执行

    git pull origin master

  • 方式二

    直接在主仓库下执行

    git submodule update --remote [submodule name]

    此命令默认会假定你想要更新并检出子模块仓库的 master 分支

2.3. 同步项目的更改

  • 方式一

    git pull

    git submodule update --init

    如果子模块有嵌套的子模块,则应使用 --recursive 选项

  • 方式二

    git pull --recurse-submodules

3. 子模块的推送

进入每一个子模块的目录下,依次执行

git checkout -b 'xxx' //由于拉下来的是“游离的 HEAD”的状态,所以得先切换出自己得分钟,或者切到原有分支也可

git add .

git commit -m 'xxx'

git push

一系列常规的推送指令

为了防止有些子仓库修改后没有提交的小技巧(新手不建议使用):

  • 可以将git push 命令接受可以设置为 “check” 或 “on-demand” 的–recurse-submodules参数

    • git push --recurse-submodules=check

      git push --recurse-submodules=on-demand

      git config push.recurseSubmodules check

      git config push.recurseSubmodules

4. 子模块的添加

在需要添加子模块的文件夹下执行git submodule add url即可

5.一些常用的子模块指令

  • 查看子模块更新信息

    git log -p --submodule

  • 修改子模块跟踪的分支

    git config -f .gitmodules submodule.(submodule name).branch (branch name)

    例如:submodule name为sub_1,branch name为dev;

    则git config -f .gitmodules submodule.sub_1.branch dev。

  • 子模块遍历

    git submodule foreach 'git命令'

    例如:

    git submodule foreach 'git status'

    git submodule foreach 'git checkout master'

  • 查看子模块指向哪个commit

    git submodule status

  • 删除子模块

    git submodule deinit submodulename

    git rm submodulename

    git rm --cached submodulename

    rm -rf ./git/modules/submodulename

  • 修改子模块url

    打开.gitmodules,找到对应模块的url并修改保存,然后执行

    git submodule sync

  • 配置选项

    显示子模块的更改摘要

    git config status.submodulesummary 1

    关闭子模块的更改摘要

    git config status.submodulesummary 0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《Git教程廖雪峰PDF》是一本非常受欢迎的学习Git版本控制工具的教程。这本教程由知名的计算机程序员廖雪峰所编写,以简洁明了的语言和实际操作示例,向读者介绍了Git的基本概念和使用方法。 这本教程从Git的起源和基础开始介绍,以帮助读者了解为什么Git成为现代软件开发必备的工具。然后,教程详细介绍了Git的安装和配置,包括如何创建和克隆仓库,添加、提交和查看文件的历史记录等等。同时,教程还介绍了如何使用分支、合并、解决冲突等高级功能,以及如何与远程仓库进行交互和协作。 这本教程采用了一种循序渐进的方式,通过一步步的实例演示和练习,帮助读者逐渐掌握Git的基本操作和常用命令。并且,教程还涉及了一些高级主题,如打标签、忽略文件、模块等,以满足读者的不同需求。 廖雪峰作为一位经验丰富的程序员,他在教程中还分享了一些他个人在使用Git过程中的一些心得和建议,这对于读者来说是非常有价值的。总体来说,《Git教程廖雪峰PDF》是一本浅显易懂、实用性强的Git入门教程,适合初学者和有一定基础的开发者阅读和学习。无论是作为参考资料还是学习教程,这本书都能够帮助读者快速掌握Git的基本使用技巧,提高版本控制和团队协作能力。 ### 回答2: 《Git教程廖雪峰PDF》是一本由知名程序员廖雪峰编写的关于Git版本控制工具的教程。这本教程以简洁明了的方式,详细介绍了Git的原理、基本操作和常见使用场景。 首先,教程从Git的基本概念入手,向读者介绍了Git的核心理念:分布式版本控制,并与集中式版本控制工具进行了对比。接着,教程详细介绍了如何安装Git,并通过简单的命令行操作演示了基本的Git使用方法,如创建仓库、添加文件、提交变更等。 除了基本操作,教程还介绍了Git工作区、暂存区和版本库的概念,以及常用的分支管理策略。同时,教程还重点讲解了远程仓库的使用,包括如何与Github等网站协同工作、如何进行分支合并和冲突解决等。 此外,教程还提供了一些高级应用技巧,如如何使用Git进行代码回滚、如何管理大型项目等。同时,教程中穿插了一些案例和示例,帮助读者更好地理解和应用Git。 总的来说,《Git教程廖雪峰PDF》是一本很好的入门教程。通过该教程的学习,读者可以了解Git的基本概念和操作方法,同时也能够掌握一些高级应用技巧。该教程以简单易懂的语言和清晰明了的实例,使得读者可以较快地上手Git,并在实际项目中应用所学知识。无论是初学者还是有一定经验的开发者,都能够从《Git教程廖雪峰PDF》中获得实用的Git技巧和经验。 ### 回答3: 《Git教程廖雪峰pdf》是一本详细介绍Git版本控制系统的教程,由知名程序员、技术作者廖雪峰所著。教程总共分为五个部分,包括了Git的基本概念、安装与配置、基础操作、团队协作和Git衍生工具。 在这本教程中,廖雪峰首先介绍了Git的基本概念,包括仓库、提交、分支、合并等。通过这些概念的解释,读者可以对Git的工作原理有一个初步的了解。 然后,廖雪峰详细介绍了Git的安装与配置,包括了Windows、Mac和Linux系统的安装步骤,以及Git的基本配置和常用命令。这部分内容对于初学者来说非常实用,可以帮助他们快速入门Git。 接着,廖雪峰介绍了Git的基础操作,包括了创建仓库、提交修改、查看修改记录等。通过这些操作的演示,读者可以掌握Git的基本使用方法。 在团队协作部分,廖雪峰教授了使用远程仓库进行团队协作的方法,例如克隆远程仓库、推送修改、拉取更新等。这部分内容对于多人协作或开源项目的参与者来说尤为重要,可以帮助他们高效地进行代码管理与版本控制。 最后,廖雪峰介绍了一些基于Git的衍生工具,如GitHubGitLab和Bitbucket等。这些工具提供了更多的协作和管理功能,能够帮助开发者更好地利用Git进行项目管理和版本控制。 总的来说,《Git教程廖雪峰pdf》是一本非常实用的Git入门教程,对于初学者或有一定经验的开发者来说都非常有帮助。通过学习这本教程,读者可以快速掌握Git的基本操作和团队协作的方法,从而更好地管理和控制代码的版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坚持学习的小王同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值