我多年来一直在使用Git,但主要是在一个开发人员场景中。现在我正在与一个团队合作开展一个项目,我不确定这个用例的最佳实践:
我有一个分支(称之为feature1
)我创建了一个分支给master
添加功能。 feature1
分支尚未合并为master,但它基本完成了。但我现在不得不处理一个新功能(将在一个名为feature2
的分支中),这取决于我在feature1
中构建的一些代码。
我是否要将feature2
创建为feature1
的分支?或者我应该将feature2
创建为master
的分支,然后从feature1
提取我需要的项目吗?
当两个分支最终合并到master
时,处理此问题的最佳方法是什么,而不会导致问题?
答案 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
。将此视为feature1
和feature2
之间的新基础。
例如,feature1
同时向sdk
添加方法的图像使用它。在feature2
中,您需要sdk
方法。在这种情况下,您将隔离sdk
更改,然后从那里创建分支,而无需复制代码或使分支完全依赖于另一个。
无论如何,变化越小越好: - 创建小(但有用)功能分支 - 尽快打开拉取请求以进行持续审核 - 经常询问反馈并在准备好时合并
其他人可能有不同的观点,但作为SCM中的任何内容,它都有一点味道。