Git Submodule 相关操作
【摘要】 Git Submodule 相关操作
要包含并管理一个外部的仓库到您的项目中,使用子模块是一个很不错的选择。
1. 关于 Git 子模块
Git 子模块是仓库中包含的另一个仓库(例如:您的项目/仓库名称是 project_a
,它包含了一个依赖project_b
,则project_b
是一个子模块)。它允许您在您的仓库中以子目录的形式包含这个子模块,子模块和您的仓库拥有独立的实体管理模式。这对于您希望在您的项目中独立跟踪特定的库或依赖时特别有用。
2. 添加子模块
2.1. 添加子模块
- 假如您想要为某个仓库(
project_a
)添加一个子模块(project_b
),其位置为submodules/project_b
,首先,请打开终端并定位到您的仓库:
cd /path/to/project_a
- 您可以使用如下命令添加一个子模块:
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
中。您应当选择如下方式:
- 定位到您的仓库
cd /path/to/project_a
- 添加特定子模块
git submodule add https://example.com/owner/project_b.git submodules/project_b
- 检出特定 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. 移除子模块
-
打开终端并定位到仓库的根目录
-
使用如下命令列出所有的 Git Submodule:
git submodule
这将会列出仓库中的所有 Submodule.
- 使用 deinit 命令移除指定模块
git submodule deinit <path_to_submodule>
将 <path_to_submodule>
替换为您想要移除的子模块的相对路径。例如,假如您想要移除的子模块的路径是 submodules/mysubmudle
,那么您的命令可能是下面这样的:
git submodule deinit submodules/mysubmodule
这将会从 Git 的跟踪信息中移除子模块。
- 使用如下命令从 git 目录中移除子模块:
git rm <path_to_submodule>
这将会从 Git 仓库中移除子模块并且将其从磁盘上删除。您也可以使用 --cached
选项,来将文件保留在磁盘上。
git rm --cached <path_to_submodule>
- 使用如下命令提交修改
git commit --message='Removed submodule <path_to_submodule>'
如此,您的子模块便从您的 Git 仓库中移除了。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)