【问题标题】:How to add a specific release of a repo as a submodule如何将特定版本的 repo 添加为子模块
【发布时间】:2017-09-26 00:50:23
【问题描述】:

我找到了这个问答:How can I have linked dependencies in a git repo?

关于如何将 repo 添加为子模块,但我不确定如何将特定版本添加为子模块。那可能吗?其他帖子的解决方案是:

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

我已经签出某个分支来工作,但不是发布。有没有办法在 1 步中做到这一点。否则我可以添加然后恢复到标签对吗?

【问题讨论】:

  • 您能解释一下您认为当您执行git checkout --recurse-submodules 或任何其他方式时会发生什么,以及这与您想要的有何不同?真的不清楚您要做什么,例如,我不确定您是否在结帐或添加时遇到问题,或两者兼而有之。

标签: git github release


【解决方案1】:

子模块总是导致父 repo 记录特定的 SHA1:它被称为 gitlink (special entry in the index of the parent repo)。

所以只需将 repo 添加为子模块(实际记录的分支/提交并不重要)。

cd /path/to/parent/repo
git submodule add /url/of/submodule/repo

然后进入子模块文件夹并检查您想要的确切 sHA1 或标签(对应于发布的那个)

cd mysubmodule
git checkout <SHA1_of_a_release>

回到父repo,添加、提交、推送:你会记录新的子模块状态(也就是说你会记录你想要的SHA1)

 cd ..
 git add .
 git commit -m "set submodule to a release SHA1"
 git push

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

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2012-12-27
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    相关资源
    最近更新 更多