在一个命令中添加具有特定标记而不是分支的子模块

win*_*ons 5 git git-submodules

对于rails模板,我想在新的rails应用程序中添加特定标签的子模块.为了保持这个简单,我想避免进入子目录并在那里运行git命令.

git submodule add --branch v1.3.37 git@example.com:foo.git vendor/foo

是我想要使用的,但它不接受--branch参数的标签:

fatal: 'origin/v1.3.37' is not a commit and a branch 'v1.3.37 cannot be created from it Unable to checkout submodule 'vendor/foo'

有没有一种简单的方法在特定标签上添加git子模块?

che*_*rui 5

我不认为这是可能的.

这是子模块命令行参考.

git submodule [--quiet] add [<options>] [--] <repository> [<path>]
add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--depth <depth>] [--] <repository> [<path>]
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,现在它只支持分支选项,就Git对象而言,分支和标记之间的区别在这里参考讨论:

"分支"是一个积极的发展路线.分支上的最新提交称为该分支的提示.

标签

指向标记或提交对象的ref.与头部相反,标记不会被提交更改.

因此,在Git团队支持子模块的SHA提交签出之前,您无法签出特定的标记.