假设我在 RepoX 中有两个分支,称为 BranchA 和 BranchB。RepoX 还有一个名为 SubmoduleY 的子模块。
BranchA 在修订版“abc”具有 SubmoduleY,BranchB 在修订版“def”具有 SubmoduleY。
假设我想将 BranchA 合并到 BranchB,但我想让 BranchB 的 SubmoduleY 指向其原始版本的“def”。我看到了几种方法:
方法一:
- 结帐分行 B.
- 将 SubmoduleY 移动到修订版 'abc' 以使实际的合并变得轻松(我们现在不想在子模块级别进行任何合并)。
- 提交 SubmoduleY 的新修订版(我们不能让它浮动以进行合并)。
- 将分支 A 合并到分支 B。解决任何冲突。
- 将 SubmoduleY 移回修订版“def”。
- 提交 SubmoduleY 的新版本。
- 将更改推送到主仓库。
方法二:
与方法 1 相同,但不执行第 6 步,而是变基并删除第 3 步中额外的子模块提交。
两者似乎都有令人讨厌的缺点:
方法 1 将两个额外的提交放入历史记录。
方法 2 忘记了与子模块修订有关的任何更改,因为这些提交被删除了。因此,以后的任何合并都将不得不再次处理一些问题。
有没有更好的办法?