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

是否可以将git子模块连接到主项目分支上的特定提交?,git,version-control,git-submodules,Git,Version Control,Git Submodules,我在GitVersion2.8.0.windows.1中遇到这种情况 我有一个主项目的“版本”“分支,每次我有一个新版本时,我都会推到那里 这个项目有一个并行开发的子模块,所以我希望有很多提交 项目主控分支和子模块主控分支(几乎)并行进行 主提交1=>主提交2=>主提交3=>主提交4 子模块提交1=>子模块提交2=>子模块提交3=>子模块提交4 在这种情况下,主提交4与子模块提交4对齐 当有人试图太晚获得发布分支时,就会出现问题。 因此,如果我在主提交1上推动释放分支,而当我们在主提交4上时有人

我在GitVersion2.8.0.windows.1中遇到这种情况

我有一个主项目的“版本”“分支,每次我有一个新版本时,我都会推到那里

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

项目主控分支和子模块主控分支(几乎)并行进行

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

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

当有人试图太晚获得发布分支时,就会出现问题。
因此,如果我在主提交1上推动释放分支,而当我们在主提交4上时有人拉动释放分支,我们就出现了错位(因为释放与主提交1相关,而现在我们在子模块提交4上)

我看到的解决方案是以某种方式强制子模块Commit 1执行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
超级项目的人都会在分支
release

中的每个提交中获得指向正确提交的子模块,如果我需要在我的机器上执行该操作而不需要重新控制该怎么办?我尝试了git签出版本
git pull origin版本
,但它没有将子模块恢复到发布版本(我仍然拥有主子模块)。我尝试了
git子模块sync
,但也没有成功。或
git子模块更新