如何在一个尚未合并的 Git 分支上工作,而该分支是依赖于另一个 Git 分支的?

34

这是我的情况:

  • 我的项目遵循主题分支模式。

  • 我创建了一个分支来修复一些问题,让我们称之为problem_fixes。我进行了更改,并提交了一个拉取请求。

  • 我需要开始开发一个新功能,所以我创建了第二个分支,称为my_feature,并提交了一堆更改。

  • 在某个时刻,我意识到my_feature依赖于尚未被接受和合并的problem_fixes(my_feature分支依赖于第一个分支中的一些修复,我不能没有它们继续进展)。

除了强迫我的项目负责人更快地接受和合并我的第一个分支外,这里最好的流程是什么?

我在想,我是否需要基于problem_fixes(而不是master)创建一个新的第三个分支,并合并我的提交到my_feature?还是如果我只是将problem_fixes合并到my_feature并继续工作,假设problem_fixes首先合并到master,则理论上应该没问题(?)


我认为你的问题更适合在 http://programmers.stackexchange.com/ 上提问。 - Theo
1
@Theo:我不这么认为。根据常见问题解答,这个问题是关于“程序员常用的软件工具”的。 - Greg Hewgill
3
我讨厌StackExchange。碎片化万岁。不过还是谢谢你的指引,我会去看看的。(编辑:如果StackOverflow有分类,那就比分散的网站组更好了) - mtjhax
1
因为这不是一个编程问题,而是一个编程方法论问题。这并不是什么大问题,它可能也会在这里得到一个好的答案,但我认为它更适合在程序员社区讨论。 - Theo
3个回答

21

从第一个分支创建你的主题分支。一旦第一个分支合并到主分支,你就可以在其之上进行变基操作,假设没有太多的更改,这应该不是问题。

如果第一个分支的提交没有更改,你的新分支将整洁地堆叠在其之上。如果第一个分支的提交被更改了(压缩、编辑或其他),在第一个分支已被合并后,你可以对第二个分支进行交互式变基操作,并进行编辑,使其看起来更好。


2
看起来我得到了两个似乎可以解决我的问题的答案。 Greg 先回答并给了稍微详细的步骤说明,所以标记为答案,但是我投了你的票。如果可以的话,我会给你+2分,因为你迫使我学习 rebase——这是一个非常重要的 git 概念。 - mtjhax
始终选择变基。合并提交并不有用。 - Abhiroj Panwar

12

是的,我认为你走在了正确的道路上。我的建议是创建一个新的my_feature分支,并进行一些工作。当我意识到my_feature依赖于problem_fixes时,将该分支合并进来。如果你知道你需要它,这可能会立即发生。然后,当my_feature合并到主分支时,你已经拥有所需的更改。

请注意,只要你有一个强大的代码审查流程,那么如果你尝试在将problem_fixes合并到主分支之前将my_feature合并到主分支,那么你会在那时注意到这个问题。


0

如果我从master开始工作,后来意识到需要一些其他分支的更改,但由于它仍然存在一些破坏性内容(但我需要的内容是完整的),无法合并,那么我可能会做以下几步:

  • 将他们的分支合并到我的分支中

  • 完成我的特性

  • 等待另一个开发人员完成其特性

  • 他们将合并到master

  • 我选择我提交的内容(除了合并提交)合并到master

你们觉得这个方法如何?尽管涉及到使用像变基一样繁琐的cherry-picking操作,但是这可能是避免特别痛苦情况的一种出路。


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