考虑到您至少有两个主要分支:
production
或master
分支,要发布的分支
test
或工作分支,您可以在其中测试所有新功能
考虑您直接开发所有新功能test
然后将这些新功能合并到production
(合并test
到production
)的方法。在某些时候,您将拥有不想发布到production
. 然后你将被迫在reset
你的test
分支上继续工作,否则你会以许多不需要的特性发布到production
. 或者您将需要丢弃test
分支并再次从分支production
中获得一个干净的副本来处理。那么如果很多团队成员都在test
分支上工作,并且都将他们的更改合并到test
,那么每个团队成员都很难跟踪其他团队成员正在处理的功能,因此冲突解决将变得更加难以完成。
我认为最好的选择是将每个功能视为一个不同的分支,直接从production
. 因此,例如在一天中您想要 3 个新功能,您将从中分支production
并创建features/one
:features/two
和features/three
. 当这些功能中的每一个都准备好时(在不同的时间,由不同的团队成员),它们都会被合并到test
(每个团队成员只需要知道他为解决冲突所做的更改,因为他在受控分支上工作,其中包含他对项目所做的更改),然后向客户或团队负责人展示。也许所有的功能都被批准了,但也许其中一个功能被拒绝了。使用这种分支策略,现在很容易丢弃所有不需要的功能并发布已批准的功能:您只需合并已批准的功能并丢弃其他功能。
为不同的功能在不同的分支上工作将使您对项目的控制更加精细,您可以在其中分开处理每个功能并且它们永远不会混合在一起。
In your case maybe you do small fixes to the project (maybe the project is a website and you just fix typos), you could then have a hotfix/quick-fixes
branch (branched from production
) where you work all those small changes (that will be published for surely) and then merge those changes to test
to make a quick review of those changes or you merge directly to production
for publishing.
Hope this point of view help you solve your branching strategy.