Jac*_*ani 4 git version-control git-submodules
我有这种情况git version 2.8.0.windows.1。
我有一个主项目的“发布”分支,每次发布新版本时我都会推送到那里。
这个项目有一个并行开发的子模块,所以我希望那里有很多提交。
项目主分支和子模块主分支(几乎)并行进行。
主提交 1 => 主提交 2 => 主提交 3 => 主提交 4
子模块提交 1 => 子模块提交 2 => 子模块提交 3 => 子模块提交 4
在这种情况下,主提交 4与子模块提交 4对齐。
当有人试图太晚获取发布分支时,就会出现问题。
因此,如果我在Master Commit 1处推送release分支,而当我们在Master Commit 4处时有人拉出 release 分支,我们就会出现错位(因为release与Master Commit 1相关,而现在我们在Submodule Commit 4 上)。
我看到的解决方案是以某种方式强迫子模块提交1至释放分支,但我不知道怎么还。
我知道一个很好的解决方案是在子模块上添加一个分支或标签,如这里所述。
但是我对子模块存储库没有权限,因此在那里设置分支或标签对我来说并不容易。
是否有任何解决方法可以强制在我的发布分支上提交特定的子模块,而不仅仅是子模块分支/标签?
这就是子模块的工作方式,所以我不明白你的问题。让我尝试增强或修复您的工作流程。您需要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"
Run Code Online (Sandbox Code Playgroud)
现在git clone --recursive超级项目获得子模块的每个人都指向分支中每个提交的正确提交release。