是否可以将git子模块连接到主项目的分支上的特定提交?

时间:2019-05-28 08:46:58

标签: git version-control git-submodules

我遇到git version 2.8.0.windows.1的情况。

我在主项目中有一个“ 发行版”分支,每次发行新版本时都会推送到该分支。

这个项目有一个并行开发的子模块,所以我希望在那里有很多提交。

Project Master 分支和 Submodule Master 分支(几乎)并行进行。

主提交1 =>主提交2 =>主提交3 =>主提交4
子模块提交1 =>子模块提交2 =>子模块提交3 =>子模块提交4

在这种情况下,主提交4 子模块提交4 对齐。

当有人尝试太晚获得 release 分支时,就会出现此问题。
因此,如果我在 Master Commit 1 上按下 release 分支,而当我们在 Master Commit 4 上有人拉下release分支,我们就会发生偏差(因为版本主提交1 有关,而现在我们在子模块提交4 )。

我看到的解决方案是强制将 Submodule Commit 1 强制为 release 分支,但我还不知道如何。

我知道,一个很好的解决方案就是按照here的说明在子模块上添加分支或标签。

但是我对子模块存储库没有权限,因此要在那儿设置分支或标签并不容易。

在我的发行分支上是否有任何变通办法来强制特定子模块提交,而不仅仅是一个子模块分支/标记?

1 个答案:

答案 0 :(得分:1)

无论如何这都是子模块的工作方式,所以我不明白您的问题。让我尝试增强或修复您的工作流程。您需要feedbackInnerSVTitle.distribution = .fill 分支中的每个提交都指向子模块中的相应提交,对吗?这很容易:在release分支中进行提交之前,请更新子模块,在子模块中签出正确的提交,然后在超级项目中提交更改:

release

现在,# In the superproject git checkout release cd subdir # into the submodule git checkout master # reconcile detached HEAD git pull origin master # update the submodule git checkout some-sha1 # if you don't want the latest commit in master cd .. # back into superproject git add subdir git commit -m "Update submodule" 超级项目中的每个人都为子模块git clone --recursive中的每个提交获得指向正确提交的子模块。