【发布时间】:2012-06-10 10:58:40
【问题描述】:
如何为特定标签或提交添加 Git 子模块?
【问题讨论】:
标签: git version-control git-submodules
如何为特定标签或提交添加 Git 子模块?
【问题讨论】:
标签: git version-control git-submodules
第一步:添加子模块
git submodule add git://some_repository.git some_repository第 2 步:将子模块修复到特定的提交
默认情况下,新子模块将跟踪主分支的 HEAD,但不会在您更新主存储库时更新。为了更改子模块以跟踪特定的提交或不同的分支,请将目录更改为子模块文件夹并像在普通存储库中一样切换分支。
git checkout -b some_branch origin/some_branch现在子模块固定在开发分支上,而不是 master 的 HEAD。
来自Two Guys Arguing — Tie Git Submodules to a Particular Commit or Branch 。
【讨论】:
git submodule add -b some_branch git://some_repository.git some_repository
git submodule add -b 不能接受标签或sha1hash。它只能取一个分支。
-b 的支持分支而不是标签或提交 shas 是一个特性而不是一个错误(实际上-b 是--branch 的简写)。
子模块存储库处于分离的 HEAD 状态,指向特定的提交。更改该提交只需签出不同的标签或提交,然后将更改添加到父存储库。
$ cd submodule
$ git checkout v2.0
Previous HEAD position was 5c1277e... bumped version to 2.0.5
HEAD is now at f0a0036... version 2.0
父存储库上的git-status 现在将报告脏树:
# On branch dev [...]
#
# modified: submodule (new commits)
添加子模块目录并提交以存储新指针。
【讨论】: