Git 针对单一环境的小频繁特征的分支策略
Git branching strategy for small frequent features targeting single environment
我们的开发过程与描述的过程类似 in this question,需要创建许多小功能。通常每天 4-8 个特征。所有功能都应部署到相同的测试环境,因此应该有单个 test
分支。
我们应该采用哪种分支策略?创建单独的功能分支似乎是一个很大的开销,同时基于主干的开发缺乏灵活性。是否可以混合使用这些方法(对于小特性直接提交到 test
,对于相对大的特性直接提交到单独的分支)。
我们对 Git 和常见的分支策略(如 git-flow)完全陌生,并试图找到最适合小的频繁特征的策略。
我们将非常感谢任何帮助或指出正确的方向,因为没有很多文章描述小功能的分支。谢谢!
考虑到您至少有两个主要分支:
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
(每个团队成员只需要知道他为解决冲突所做的更改,因为他工作在一个受控的分支上,只包含他对项目所做的更改),然后向客户或团队负责人展示。也许所有的特性都被批准了,但也许其中一个特性被拒绝了。使用这种分支策略,现在可以很容易地丢弃所有不需要的功能并发布已批准的功能:您只需要合并已批准的功能并丢弃其他功能。
针对不同的功能在不同的分支上工作将使您可以更精细地控制您的项目,在这里您可以分开处理每个功能并且它们永远不会混在一起。
在你的情况下,也许你对项目做了小的修复(也许项目是一个网站,你只是修复了拼写错误),然后你可以有一个 hotfix/quick-fixes
分支(从 production
分支)您在其中进行所有这些小更改(肯定会发布),然后将这些更改合并到 test
以快速查看这些更改,或者您直接合并到 production
以进行发布。
希望这个观点能帮助你解决你的分支策略
我们的开发过程与描述的过程类似 in this question,需要创建许多小功能。通常每天 4-8 个特征。所有功能都应部署到相同的测试环境,因此应该有单个 test
分支。
我们应该采用哪种分支策略?创建单独的功能分支似乎是一个很大的开销,同时基于主干的开发缺乏灵活性。是否可以混合使用这些方法(对于小特性直接提交到 test
,对于相对大的特性直接提交到单独的分支)。
我们对 Git 和常见的分支策略(如 git-flow)完全陌生,并试图找到最适合小的频繁特征的策略。
我们将非常感谢任何帮助或指出正确的方向,因为没有很多文章描述小功能的分支。谢谢!
考虑到您至少有两个主要分支:
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
(每个团队成员只需要知道他为解决冲突所做的更改,因为他工作在一个受控的分支上,只包含他对项目所做的更改),然后向客户或团队负责人展示。也许所有的特性都被批准了,但也许其中一个特性被拒绝了。使用这种分支策略,现在可以很容易地丢弃所有不需要的功能并发布已批准的功能:您只需要合并已批准的功能并丢弃其他功能。
针对不同的功能在不同的分支上工作将使您可以更精细地控制您的项目,在这里您可以分开处理每个功能并且它们永远不会混在一起。
在你的情况下,也许你对项目做了小的修复(也许项目是一个网站,你只是修复了拼写错误),然后你可以有一个 hotfix/quick-fixes
分支(从 production
分支)您在其中进行所有这些小更改(肯定会发布),然后将这些更改合并到 test
以快速查看这些更改,或者您直接合并到 production
以进行发布。
希望这个观点能帮助你解决你的分支策略