将开发分支合并到发布分支

4
也许对于更有经验的 Git 用户来说这是一个简单的问题,但我现在已经努力几个小时了。
我有三个分支:Develop、MyBranch 和 Release。
MyBranch 是基于 Develop 的,由于它是一个较长的功能,所以 Develop 两次合并到了 MyBranch 中。Release 是从 Develop 分支出来的,并且 Develop 领先于 Release(因为我们仍在继续开发下一个版本的功能)。
现在我需要将 MyBranch 合并到 Develop 和 Release 中去。合并到 Develop 没有任何问题,但我不确定是否应该合并到 Release。由于 Develop 两次合并到了 MyBranch 中,我可能会意外地合并一些 Release 不需要的变更。我该怎么办?我考虑过:
- 检出新分支 MyBranchRelease。 - 撤销 Dev 对 MyBranchRelease 的两次合并。 - 将 Release 合并到 MyBranchRelease 以解决冲突。 - 将 MyBranchRelease 合并到 Release 中。
这样做有意义吗?期待您的回复。

每个版本都会有一个单独的发布分支,如r1、r2等。 那么为什么要将您的分支合并到现有的发布分支中呢? 您应该在合并所有需要的相关更改后从develop分支分支出来。 - Utsav Patel
由于发布分支必须稳定,我们不希望所有在开发分支上进行的更改也出现在发布分支上。只有像MyBranch这样经过选择和测试的更改才会合并到两个分支中。 - Julian Dm
1个回答

3

所以你有:

          r--r--r (release)
         /
--d--d--d---d--d--d--d--d (Develop)
         \   \     \
          \   v     v
          mb--mb----mb--mb--mb--mb--mb

由于 develop 分支已经两次合并到了 MyBranch 分支中,我可能会不小心合并一些不想要的更改到发布版本中。

按照您所描述的创建测试分支是一个好策略,但这涉及到撤销合并

另一种方法是在 MyBranch 的基础上创建 MyBranchRelease 分支,然后将其重新基于 release 分支进行变基,同时删除这两个合并提交。

git checkout MyBranch 
git checkout -b MyBranchRelease 
git rebase -i release

谢谢你对此进行确认。只是为了澄清rebase:在rebase时,我是否需要显式删除这两个合并,还是这是隐含完成的?(因为rebase会将MyBranch的根设置为Release) - Julian Dm
@JulianDm 应该是自动完成的,但还是要再检查一下。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接