用标签把一堆git repos拉到一起

时间:2018-05-17 13:07:09

标签: git tags clone release

我有一个项目,它使用来自几个不同的git repos(一些由供应商开发)的代码,我想以某种方式将它们组合在一起。我正在考虑使用git子模块,并拉入我需要的每个模块。这似乎工作正常。 此时我正在考虑使用git标记来标记平台的发布。我正在考虑以下几点: -

cd myrepo-master
git submodule update --remote

然后单独标记所有模块。

git submodule foreach 'git tag v0.1'
git submodule foreach 'git push origin v0.1'

主模块本身

git tag v0.1
git push origin v0.1

此时我有点卡住了。我以为我会克隆克隆,然后git checkout就是那个标签......但我想这不是事情的运作方式吗? (在使用git clone时似乎没有办法指定标记)

我是否完全吠叫了错误的树?有没有更好的方法呢?

编辑:为了澄清,我们只是试图确保在特定时间点进入测试环境的所有代码(称之为发布版本?版本?)也被推送到更高的环境,包括产品使用完全相同的代码。但该代码来自几个不同的回购。

1 个答案:

答案 0 :(得分:0)

您只需要标记主模块,而不是子模块。例如,在主模块中执行:

git tag v0.1
git push

然后在其他地方,也许在您的构建环境中:

git pull
git checkout v0.1
git submodule update

这将检查主模块标记的提交记录的提交时的每个子模块。

如果你是从头开始,而不是拉,你会这样做:

git clone url-to-the-remote-repo
cd main-module
git submodule init
git checkout v0.1
git submodule update