我们有一个网络应用程序,我们更新和发布几乎每天。我们使用 git 作为我们的 VCS,我们当前的分支策略非常简单且不完善: 我们有一个主分支,我们检查我们“感觉良好”的更改。这个可以用,但只能在我们检查到一个重大改变之前。
是否有人有一个满足以下要求的 小分队 git 分支策略:
理想情况下,我希望看到您的一步一步的过程为开发人员工作的一个新的错误
在 VCS 中,只有一个“主”分支很快就会显示出它的局限性,因为您不能同时在一个分支上执行所有的开发工作。 这意味着你需要知道 什么时候分支。
但是在 DVCS (如“ Decentralization”VCS)中,您还有一个 发布问题 ,其中包含保留在存储库中的本地分支,以及推送到或从中提取的分支。
在这种情况下,首先确定并发开发工作,然后决定发布(推/拉)流程。例如(这不是唯一的方法) :
其他版本管理过程也存在,比如这个 所以问题证明。
您可能受益于 Scott Chacon 在 专业饭桶中描述的工作流。在这个工作流中,有两个始终存在的分支: 师父和 开发。
Master 代表项目的最稳定版本,并且您只能从这个分支部署到生产环境。
Development 包含正在进行的更改,这些更改可能不一定准备投入生产。
从 开发分支,您可以创建主题分支来处理各个特性和修复程序。一旦您的功能/修复准备就绪,您就可以将其合并到 开发中,此时您可以测试它如何与您的同事合并进来的其他主题分支进行交互。一旦 开发处于稳定状态,就将其合并到 师父中。从 师父部署到生产应该总是安全的。
Scott 将这些长时间运行的分支描述为代码的“竖井”,在这里,不太稳定的分支中的代码在经过测试并得到团队的普遍认可后,最终将“逐渐”升级为被认为更稳定的分支。
按照这个模型,您的工作流程可能是这样的:
关于这个工作流程的更多细节,请查看 Pro Git 中的 分支工作流章节。
点击这里阅读 ReinH 为敏捷团队提供的 Git 工作流: http://ReinH.com/blog/2009/03/02/a-Git-working-for-Agile-team. html”rel = “ nofollow norefrer”> http://ReinH.com/blog/2009/03/02/a-Git-Workflow-for-Agile-teams.html
这对于小型团队非常有效。这里的目标是确保所有可能不稳定的东西都进入某种分支。只有当您准备好让特性分支之外的每个人都可以使用它时,才将其合并回 master。
注意: 这个策略几乎不是 git 特定的,但是 git 使得实现这个策略非常容易。
作为一个新手,他试图找到一个直截了当的策略来教其他从未使用过源代码控制的开发人员。这是一个适合 http://nvie.com/posts/a-successful-git-branching-model/我尝试使用的标准 GIT 工作流程,在手册页,但它有点混淆我和我的观众完全。
在过去的6个月里,我只修复了两次冲突。 我已经添加了很多步骤,以便在开发特性时总是在合并后进行测试,以及“提取并合并”或“拉取——重建”(上午和下午各一次)。我们还使用 github.com 作为获取最新代码的中心站点。
使用 master分支作为开发分支,并创建用于执行 bug 修复的发布分支。
master
在开发窗口期间,任何新特性都将在 master上运行(直接提交或作为带有 pull-request 的主题分支,由您决定——不以图形方式显示)。一旦实现了所有计划的特性,输入特性冻结并执行测试。当你高兴的时候,在 master上将发布标记为 v1.0。
v1.0
随着时间的推移,用户会发现 v1.0中的 bug,所以您需要从这个标记创建一个分支(例如,以发行版 1.0的名字命名) ,并修复分支中的这些 bug。当你已经修复了足够多的错误,你认为它保证了一个新的发布,然后将其标记为 v1.0.1,并将其合并回 master。
1.0
v1.0.1
与此同时,一个新的开发窗口可以发生在 master分支,最终将被标记为 v1.1。
v1.1
冲洗和重复。
这遵循 语义版本控制编号逻辑。
---------(v1.0)--------------------------------(v1.1)-----------------------------> master \ \ ---(v1.0.1)---(v1.0.2)---> 1.0 ---(v1.1.1)---(v1.1.2)---> 1.1
(使我的 评论高于它自己的答案,因为我应该最初。)
来自 Github 的 Scott Chacon:
GitHub Flow 是什么? 主分支中的任何内容都是可部署的 要做一些新的工作,创建一个描述性命名的分支(即: New-oauth2-scope) 在本地提交到该分支,并定期将您的工作推送到服务器上的同一命名分支 当您需要反馈或帮助,或者您认为分支已经准备好进行合并时,请打开 拉请求 在其他人审阅并签署了 功能,您可以将其合并到 master 中 一旦它被合并并推到“ master”,您就可以并且应该立即部署
GitHub Flow 是什么?
更多细节请参见整篇文章: 《 http://scottchacon.com/2011/08/31/github-flow.html 》
请注意,“ pull request”是 Github 的一个发明,它是一个嵌入到他们网站中的东西,而不是 Git 本身。 < a href = “ https://help. Github.com/article/using-pull-request/”rel = “ norefrer”> https://help.Github.com/articles/using-pull-requests/