Git 多个分支的用法

Git usage with multiple branches

多年来我一直在使用 Git,但主要是在单个开发人员场景中使用。现在我正在和一个团队一起做一个项目,我不确定这个用例的最佳实践:

我创建了一个分支(称之为 feature1),用于向 master 添加功能。 feature1 分支还没有合并到 master 里面,但是基本上已经合并了。但我现在必须开发一项新功能(它将进入一个名为 feature2 的分支),它取决于我在 feature1 中构建的一些代码。

我想创建 feature2 作为 feature1 的分支吗?或者我应该创建 feature2 作为 master 的分支,然后从 feature1 中提取我需要的项目?

当两个分支最终合并到 master 时,在不引起问题的情况下处理此问题的最佳方法是什么?

Would I want to create feature2 as a branch of feature1?

是的。在仍然拥有 feature2 所需的所有必需提交的同时,从可能的最旧提交中分支出来。 (意思是:如果 feature1 有 5 次提交,而对于 feature2,你只需要前 2 次,从第 2 次分支出来。)然后你基本上让 feature1 和 feature2 共享同一个祖先,这很好。

Or should I create feature2 as a branch of master, and then pull in the items I need from feature1?

不,您不希望在多个地方进行相同的提交。有时会发生提交被更改的情况。这将使跟踪事情变得更加困难。

Would I want to create feature2 as a branch of feature1? Or should I create feature2 as a branch of master, and then pull in the items I need from feature1?

两个选项:

1.如果您认为 feature1 会在 feature2

之前发货

您想从 feature1 分支,这是通常采用的方法。

2。如果您认为 feature2 将在没有完整 feature1

的情况下发货

您想从 master 分支,并添加您需要的提交。您也可以通过复制它来获取代码,但这不是 nice

还有更好的选择吗?

在某些情况下可能无法实现,但我会将您需要的内容与 feature1 隔离开来,甚至可能合并到 master。将其视为 feature1feature2 之间的新基数。

例如feature1添加方法到sdk的图像同时使用它。在 feature2 中,您需要 sdk 方法可用。在这种情况下,您将隔离 sdk 更改,然后从那里创建分支,而不必复制代码或让一个分支完全依赖另一个分支。

总之,变化越小越好: - 创建小的(但有用的)功能分支 - 尽快打开拉取请求以进行持续审查 - 经常寻求反馈并在准备好时合并

其他人可能有不同的看法,但作为 SCM 中的任何东西,这都有点味道。