对于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子模块?
答案 0 :(得分:5)
我认为不可能。
这是子模块command line reference。
git submodule [--quiet] add [<options>] [--] <repository> [<path>]
add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--depth <depth>] [--] <repository> [<path>]
正如你所看到的,现在它只支持分支选项,就Git对象而言,分支和标记之间的区别在这里讨论reference:
分支
A&#34;分支&#34;是一个积极的发展路线。最近的提交 一个分支被称为该分支的一角。
标签
指向标记或提交对象的引用。与头部,标签相反 不会因提交而改变。
因此,在Git团队支持子模块的SHA提交签出之前,您无法签出特定的标记。
答案 1 :(得分:0)
您可以采取一种解决方法:只需 fork
目标存储库并从上游标记创建一个新分支。
git clone git@my.example.com:foo.git /tmp/foo && cd /tmp/foo
git checkout -b release-v1 v1
git push --set-upstream origin release-v1
cd ~/workspace && git submodule add --branch release-v1 git@my.example.com:foo.git vendor/foo
但稍后您必须从新闻标签创建新分支,然后才能将其用作 git 子模块。