还不会 Git 子模块操作?一文教你学会 git submodule 的增、删、改、查!

简介: 还不会 Git 子模块操作?一文教你学会 git submodule 的增、删、改、查!

添加子模块

  • 添加子模块命令如下所示:
$ git submodule add <url> <path>
  • url 为想要添加的子模块路径
  • path 为子模块存放的本地路径


  • 以 GitHub 仓库 r-tinymaix https://github.com/RiceChen0/r-tinymaix 为例,将其做为子模块添加到本地仓库 ./sdk/packages/online-packages/r-tinymaix 路径下,完整命令如下:
$ git submodule add https://github.com/RiceChen0/r-tinymaix.git ./sdk/packages/online-packages/r-tinymaix
  • 命令执行中下载该子模块:

  • 下载完成后在本地路径就可以看到子模块内容:

  • 这里报了一个警告:
warning: in the working copy of '.gitmodules', LF will be replaced by CRLF the next time Git touches it
  • 这是因为在文本处理中,Windows平台中使用 CR/LF(回车/换行)作为换行符,Linux平台中仅使用 LF(换行)作为换行符,这个问题可以通过以下方式解决:
$ git config --global core.autocrlf true


查看子模块

  • 查看子模块命令:
$ git submodule


  • 可以看到子模块信息:
c5029b773b0511d32cca78275b7c8f1fb5eb34a8 sdk/packages/online-packages/r-tinymaix (heads/main)


  • 指令执行效果:

修改子模块

  • 子模块独立于主仓库,当子模块需要修改时,需要进入子模块文件夹,按照子模块版本控制体系修改提交代码。

更新子模块

  • 更新子模块命令:
$ git submodule update

提交子模块

  • 首先查看仓库状态:
$ git status
  • 可以看到有新文件添加进来:

  • 这里我自己添加了一个 Sconscript 文件,将它也添加进来,执行命令:
$ git add .
  • 再次查看仓库状态,新文件已经添加进来了:


  • 提交到仓库、推送到远端:
$ git commit -m "add r-tinymaix" 
$ git push origin HEAD:master
  • 博主仓库没有远端,就不 push 了~

删除子模块

简单粗暴式
  • 删除 .gitmodules 文件中子模块相关条目:

  • 删除 .git/config 配置项中子模块相关条目:


  • 删除 .git/module/ 目录下子模块相关内容:

  • 删除子模块目录及源码:

官方优雅式
  • 根据官方文档,使用卸载子模块命令:
$ git submodule deinit sdk/packages/online-packages/r-tinymaix
  • 如果添加上参数 -f,则子模块工作区内即使有本地的修改,也会被移除:

  • 此操作是在 .git/config 配置项中删除了子模块相关条目:

  • 执行 rm 命令:
git rm  sdk/packages/online-packages/r-tinymaix


  • 此操作为移除 sdk/packages/online-packages/r-tinymaix 文件夹,并自动在 .gitmodules 中删除了 r-tinymaix 子模块相关内容:

  • 但是此时 .git/module/ 目录下子模块相关内容还有残余,可自行删除:


更多内容

  • Hello阿尔法-CSDN博客
  • Hello阿尔法-知乎
  • Github
相关文章
|
6月前
|
开发工具 git
记IDEA Git版本回退并push到远程操作
记IDEA Git版本回退并push到远程操作
151 1
记IDEA Git版本回退并push到远程操作
|
6月前
|
开发工具 git 开发者
|
6月前
|
开发工具 git
web后端-IDEA的Git操作
web后端-IDEA的Git操作
|
6月前
|
Linux 网络安全 开发工具
Git拉取代码的完整示例操作
Git拉取代码的完整示例操作
256 0
|
5月前
|
开发工具 git
idea的git reset current branch to here操作详解
idea的git reset current branch to here操作详解
570 1
|
4月前
|
Ubuntu 开发工具 git
git 超实用教程【人人必会!】(含大厂的 git 操作规范)
git 超实用教程【人人必会!】(含大厂的 git 操作规范)
62 0
|
6月前
|
开发工具 git 开发者
【专栏】探讨了 Git 中的 `git rebase` 操作,它用于重新应用提交到另一分支,改变历史顺序
【4月更文挑战第29天】本文探讨了 Git 中的 `git rebase` 操作,它用于重新应用提交到另一分支,改变历史顺序。与 `git merge` 不同,rebase 重写提交历史,提供简洁线性的历史记录。文章介绍了 rebase 的基本操作、应用场景,如整理提交历史、解决冲突和整合分支,并强调了使用注意事项,如避免在公共分支上操作。尽管 rebase 可以带来整洁的历史和冲突解决便利,但其潜在的风险和可能导致的历史混乱需谨慎对待。理解并恰当使用 `git rebase` 可以提升开发效率和代码质量。
194 1
|
6月前
|
开发工具 git
|
6月前
|
开发工具 git 开发者
掌握常见Git操作:技巧与实践
掌握常见Git操作:技巧与实践