Answers:
您可能会受益于Pro Git中描述的工作流Scott Chacon 。在此工作流程中,您始终有两个分支:master和development。
master代表项目的最稳定版本,并且您只能从该分支部署到生产中。
开发包含正在进行的变更,不一定准备好进行生产。
在develop分支中,您可以创建主题分支,以处理各个功能和修订。一旦功能/修复就绪,就可以将其合并到开发中,这时您可以测试它如何与您的同事合并的其他主题分支进行交互。一旦开发处于稳定状态,请将其合并到master中。从主服务器部署到生产环境应该总是安全的。
Scott将这些长期运行的分支描述为代码的“孤岛”,其中,不稳定的分支中的代码最终会在经过测试和团队总体认可后最终“升级”为被认为更稳定的分支。
逐步地,您在此模型下的工作流程可能如下所示:
有关此工作流程的更多详细信息,请查看Pro Git中的“ 分支工作流程”一章。
develop
是git所没有的问题的不必要的“解决方案”。据我所知,成功的原因是文章写得好,如果被误导,不允许发表评论。这里有一个反文章barro.github.io/2016/02/...
在以新手身份进入后,试图找到一种简单的策略来教其他从未使用过源代码控制的开发人员。这是一个适合http://nvie.com/posts/a-successful-git-branching-model/的模型,我尝试使用手册页中的标准GIT工作流程,但是这使我和观众完全感到困惑。
在过去的6个月中,我只需要解决两次冲突。我添加了一些步骤以在合并后始终进行测试,并在开发功能时进行很多操作(“每天早上和下午”“获取并合并”或“拉-重新设置”)。我们还使用github.com作为提取最新代码的中心位置。
default master branch
最常用的开发人员,这是不对的A successful Git branching model
来自Github的Scott Chacon:
我们如何做,什么是GitHub Flow?
- master分支中的任何内容都是可部署的
- 要处理新的东西,请从master创建一个描述性命名的分支(即:new-oauth2-scopes)
- 本地提交到该分支,并定期将您的工作推送到服务器上的同一命名分支
- 当您需要反馈或帮助时,或者您认为分支可以合并时,请打开 拉取请求
- 在其他人查看并签署了该功能后,您可以将其合并到主功能中
- 合并并推送到“主服务器”后,您可以并且应该立即部署
有关更多详细信息,请参见整篇文章:http : //scottchacon.com/2011/08/31/github-flow.html
请注意,“拉取请求”是Github的发明,它已经融入了他们的网站,而不是Git本身:https : //help.github.com/articles/using-pull-requests/
将master
分支用作开发分支,并创建用于执行错误修复的发行分支。
任何新功能都将master
在开发窗口期间继续(直接提交或作为主题分支与拉动请求,由您决定-未在图形中显示)。实施所有计划的功能后,输入功能冻结并执行测试。满意时,将发布标记master
为v1.0
。
随着时间的流逝,您的用户会发现错误,v1.0
因此您将希望从该标记创建分支(例如,在版本之后命名1.0
),然后在分支中修复这些错误。修复了足够多的错误后,您认为它需要一个新版本,然后v1.0.1
将其标记为并将其合并回master
。
同时,master
分支上可能会出现一个新的开发窗口,最终将其标记为v1.1
。
冲洗并重复。
这遵循语义版本控制编号逻辑。
---------(v1.0)--------------------------------(v1.1)-----------------------------> master
\ \
---(v1.0.1)---(v1.0.2)---> 1.0 ---(v1.1.1)---(v1.1.2)---> 1.1
1.0.1
更改重新合并到master
1.1
合并后以master为基础1.0.1
-这有助于最大程度地减少冲突。
1.1
是一个发行分支,并具有表示一个或多个发行的确切状态的标签。重新分支该分支将导致您失去该表示。我强烈建议您将发布分支设置为拒绝强行推送以防止这种情况。
在VCS中,仅拥有一个“主”分支会很快显示其局限性,因为您不能在一个分支上同时进行所有开发工作。
这意味着您需要知道何时分支。
但是在DVCS中(例如在“分散式” VCS中),您还会遇到发布问题,其中分支位于本地存储库中,而分支正在推送或撤出。
在这种情况下,首先要确定并发的开发工作,然后确定发布(推/拉)过程。例如(这不是唯一的方法):
正如该SO问题所证明的,还存在其他发布管理过程。