如何将存储库的特定版本添加为子模块

Bre*_*ren 7 git release github

我发现了这个问题:How can I have linked dependency in a git repo?

关于如何将存储库添加为子模块,但我不确定如何将特定版本添加为子模块。那可能吗?另一篇帖子的解决方案是:

git 子模块添加 git://github.com/example/some_lib.git lib/some_lib

我已经签出某个分支来工作,但没有发布。有没有一种方法可以一步完成此操作。否则我可以添加然后恢复到标签,对吧?

Von*_*onC 9

子模块总是会导致父存储库记录特定的 SHA1:它称为 gitlink 存储库索引中的特殊条目)。

因此,只需将存储库添加为子模块(最终实际记录哪个分支/提交并不重要)。

cd /path/to/parent/repo
git submodule add /url/of/submodule/repo
Run Code Online (Sandbox Code Playgroud)

然后进入子模块文件夹并签出您想要的确切 sHA1 或标签(与版本相对应的)

cd mysubmodule
git checkout <SHA1_of_a_release>
Run Code Online (Sandbox Code Playgroud)

返回父仓库,添加、提交和推送:您将记录新的子模块状态(也就是说您将记录您想要的 SHA1)

 cd ..
 git add .
 git commit -m "set submodule to a release SHA1"
 git push
Run Code Online (Sandbox Code Playgroud)

每当您克隆 --recursive 您的父存储库时,您的子模块将再次检出到该版本的 SHA1。