使用多个分支的Git

时间:2015-07-31 22:15:15

标签: git github git-branch

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

我有一个分支(称之为feature1)我创建了一个分支给master添加功能。 feature1分支尚未合并为master,但它基本完成了。但我现在不得不处理一个新功能(将在一个名为feature2的分支中),这取决于我在feature1中构建的一些代码。

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

当两个分支最终合并到master时,处理此问题的最佳方法是什么,而不会导致问题?

2 个答案:

答案 0 :(得分:2)

  

我是否要将feature2创建为feature1的分支?

是。尽可能分支最旧的提交,同时仍然具有功能2需要的所有必需提交。 (意思是:如果feature1有5个提交,对于feature2你只需要前2个,从第2个分支出来。)那么你基本上有feature1和feature2共享同一个祖先,这是完全没问题的。

  

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

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

答案 1 :(得分:0)

  

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

两个选项:

<强> 1。如果您认为feature1将在feature2

之前发货

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

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

的情况下发货

您希望从master分支,并添加所需的提交。您也可以通过复制代码来获取代码,但这不是很好

有更好的选择吗?

在某些情况下可能无法实现,但我会从feature1中找出您需要的内容,甚至可能合并到master。将此视为feature1feature2之间的新基础。

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

无论如何,变化越小越好:   - 创建小(但有用)功能分支   - 尽快打开拉取请求以进行持续审核   - 经常询问反馈并在准备好时合并

其他人可能有不同的观点,但作为SCM中的任何内容,它都有一点味道。