Git Submodule 相关操作

举报
Annlix 发表于 2024/12/10 10:01:34 2024/12/10
【摘要】 Git Submodule 相关操作

要包含并管理一个外部的仓库到您的项目中,使用子模块是一个很不错的选择。

1. 关于 Git 子模块

Git 子模块是仓库中包含的另一个仓库(例如:您的项目/仓库名称是 project_a,它包含了一个依赖project_b,则project_b 是一个子模块)。它允许您在您的仓库中以子目录的形式包含这个子模块,子模块和您的仓库拥有独立的实体管理模式。这对于您希望在您的项目中独立跟踪特定的库或依赖时特别有用。

2. 添加子模块

2.1. 添加子模块

  1. 假如您想要为某个仓库(project_a)添加一个子模块(project_b),其位置为 submodules/project_b,首先,请打开终端并定位到您的仓库:
cd /path/to/project_a
  1. 您可以使用如下命令添加一个子模块:
git submodule add https://example.com/owner/project_b.git submodules/project_b

如果您想要添加特定的分支(branch_c),您可以使用 -b 选项在此处指定:

git submodule add -b branch_c https://example.com/owner/project_b.git submodules/project_b

2.2. 跟踪特定 Tag 、Release、Commit

假如您想要跟踪特定的 Tag/Release,假设其为 v1.0.1,请不要在添加子模块时将其指定到-b 中。您应当选择如下方式:

  1. 定位到您的仓库
cd /path/to/project_a
  1. 添加特定子模块
git submodule add https://example.com/owner/project_b.git submodules/project_b
  1. 检出特定 Tag/Release/Commit
# 检出 Tag/Release
git checkout tags/v1.0.1

# 检出 Commit
git check <commit_id>

2.3. 提交

完成 2.1. 添加子模块2.2. 跟踪特定 Tag 、Release、Commit 后,您需要将改动提交到远程仓库中。

git add .
git commit -m "Add submodule submodules/project_b"

3. 移除子模块

  1. 打开终端并定位到仓库的根目录

  2. 使用如下命令列出所有的 Git Submodule:

git submodule

这将会列出仓库中的所有 Submodule.

  1. 使用 deinit 命令移除指定模块
git submodule deinit <path_to_submodule>

<path_to_submodule> 替换为您想要移除的子模块的相对路径。例如,假如您想要移除的子模块的路径是 submodules/mysubmudle,那么您的命令可能是下面这样的:

git submodule deinit submodules/mysubmodule

这将会从 Git 的跟踪信息中移除子模块。

  1. 使用如下命令从 git 目录中移除子模块:
git rm <path_to_submodule>

这将会从 Git 仓库中移除子模块并且将其从磁盘上删除。您也可以使用 --cached 选项,来将文件保留在磁盘上。

git rm --cached <path_to_submodule>
  1. 使用如下命令提交修改
git commit --message='Removed submodule <path_to_submodule>'

如此,您的子模块便从您的 Git 仓库中移除了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。