我工作的公司开始遇到他们目前的分支模型的问题,我想知道社区有哪些不同的分支策略?
对于不同情况,有什么好的吗?贵公司使用什么?它们的优点和缺点是什么?
我目前正在寻找git-flow,并试图弄清楚如何将它用于我参与的项目.
我查看了各种git-flow教程,我对git非常熟悉.因此,我不需要任何关于git的技巧,而是直接使用git-flow的工作流程.
情况如下:
当我重新定义一个版本(让我们称之为1.0)时,这就得到了开发的分支,这很好.现在让我说我开始研究2.0,添加新功能.当然,一旦完成,我想将它们合并到开发中.现在1.0上的修复很好,所以我们也说我生成了几个版本1.0.1,1.0.2等.所有这些也将更新开发分支,这也很好.到目前为止,麻烦,我可以独立开发2.0和1.0.x的修补程序的功能.
但是,假设某人要求1.1版本的新功能.现在我有一个问题.如果我创建一个功能分支,这将基于开发分支,它可能已经包含2.0内容,我可能不希望在1.1版本中.
有一种简单的方法,可以独立处理这些2.0和1.1的变化吗?
我已经看到了几种可能性:
在开发的最后发布位置创建一个新分支.将开发重新定位到此位置并重命名另一个开发分支.但是,此分支不包含1.0.1等的任何修补程序.
在2.0完成之前,不要合并2.0的功能.然而,在最后一刻,我将不得不将大量未合并的更改保持打开状态.如果2.0发布并且之后要求更改为1.0.x,这也无济于事.
这对git flow来说有可能吗?即,一旦新版本的工作开始甚至完成,早期版本的版本是基于什么?
我注意到有关分支名称的问题的一些 答案引用Mercurial wiki来指示每个功能的分支或每个bug的分支命名约定可能会导致性能问题.将分支标记为--close-branch
在提交时标记为关闭的能力是否会对此性能声明产生任何影响?
我正在尝试为Web应用程序项目确定最佳分支策略.以下是我到目前为止所提出的建议,我将非常感谢任何评论和经验.
我看到它的方式有两个主要的分支策略:"按版本分支"和"按功能分支".
"按发布分支":开发发生在主干上.当发布时间临近时,将为该发行版创建一个分支.然后稳定/测试该分支,最后进行释放.在发布之后,分支被合并回主干,同时保持发布分支活动以进行错误修复.是否应用了错误修复,然后将其合并到主干中(如果主干上的开发没有以其他方式使错误重叠).新功能将添加到主干中,不会影响发布分支.当新的发布时间临近时,将创建一个新的发布分支aso
"按功能分支":主干始终是"生产"主干(现场代码).错误修正直接提交到主干.下一版本的功能是在功能分支中开发的.Bugfixes会不时合并到功能分支中.当发布时间到来时,功能分支将合并到主干中,并且生命周期将继续.
现在,我认为这两种策略之间的实际区别在于,"发布"允许您维护软件的不同生产版本(当客户A具有版本1和客户B版本1.5时,客户端是此处的付费客户案件).相比之下,使用"按功能"策略,您只能支持当前的生产版本(所有客户端都使用最新版本).
由于在典型的Web应用程序中,所有客户端都使用相同的"最新"版本(因为它们都访问相同的服务器),我认为"按功能"方法是最常用的.它消除了合并"跨层次结构"的需要,比如说必须将bug修复应用于所有3个版本.
所以我目前的状态是我应该选择"逐个分支".如果重要,我的团队不是很熟练.
svn version-control branch web-applications branching-strategy
我们正在使用git-flow
分支模型开发包含Web工件的多个项目.
参考:Vincent Driessen的git flow分支模型
我们正在使用develop
分支并jenkins
自动构建和部署SNAPSHOT
Web工件以测试环境.
我们手动运行git flow release start
并git flow release finish
构建非快照工件,这些工件部署到我们的工件并最终部署在prod中.
(如何运行git flow xxx
命令?这是一个备忘单)
我的问题:QA的工作流程应该如何运作?
鉴于:
git flow
尽可能地使用脚本和分支模型看看分支模型,我自己最好的理解是:
release/1.1
).QA
.release/1.1
分支中进行更改并根据需要返回到步骤2finish
发布(合并为主)有没有人有这方面的经验,特别是一步2
?如何唯一地标识发布分支中的工件?
我们正在考虑使用版本候选版本,其中maven版本1.1.RC1
指示release-candidate1
,跟随1.1.RC2
,最后1.1
(最终版本).
我为每个功能都有一个Git分支.但是,有时候,当A
我在分支机构中进行开发时,我想测试一下A
如果B
应用的话也会如何表现.
目前,我用这个:
git checkout A
git branch base
git merge B
git reset --mixed base
git branch -D base
Run Code Online (Sandbox Code Playgroud)
有没有更短的方法来做到这一点?
另外:如果A
和B
不共享同一个祖先怎么办?
o -- o -- o [A]
\-- x -- o [v1_0]
\ -- b1 -- b2 -- o [B]
Run Code Online (Sandbox Code Playgroud)
我怎么能更轻松地做这样的事情?
git checkout A
git branch ABase
git cherry-pick v1_0..B // only applying b1,b2 not x
git reset --mixed ABase
git branch -D ABase
Run Code Online (Sandbox Code Playgroud) 在 Azure DevOps 板上的任务中,我可以单击“创建新分支”,如下所示。
\n\n\n\n这将打开一个对话框,在其中指定新分支的名称和基础。为了节省时间 \xe2\x80\x94 并鼓励我的团队 \xe2\x80\x94 中一致、有意义的分支命名 \xe2\x80\x94 我希望名称字段具有基于任务标题的默认值。
\n\n是否有这样的设置或其他方法来完成相同的任务?
\n\n我见过这个类似的问题,但在发布时仍未得到答复。另外,如果可能的话,我希望在 AzureDevops 在线 UI 中实现这一点,因为这就是我们目前跟踪工作的方式。
\n\n还有:在 Azure DevOps Git 中强制执行分支命名约定。但我不想强制执行该约定,而是想通过使用我们已经一贯遵循的约定来节省时间。
\n\n\ngit azure branching-and-merging branching-strategy azure-devops
我现在正在为我的一个项目使用Git,我喜欢它.
但是,因为我是唯一一个在我的项目上工作的人,所以我用过的唯一命令就是
git status
git add .
git commit -m 'message here'
git push origin master
Run Code Online (Sandbox Code Playgroud)
我很久以前就已将项目推向远程(我使用Capistrano进行部署),一切都很顺利.
现在我想改变网站的设计,但保持逻辑不变.我猜我需要创建一个新分支(让我们称之为newdesign
).
我想知道的是:如果我正在newdesign
分支机构工作,并且我在分支中看到了一个错误,master
我怎么能修复bug master
然后将该bugfix集成到newdesign
分支中,以便后者成为与实际逻辑保持同步?
我无法理解如何处理以下情况:
master
为commit A
。v1.0.0
因此我们将commit标记A
为,v1.0.0
然后rel-1.0.x
从中创建一个发布分支以进行质量检查。master
为commit B
。v1.0.0
,我们部署并删除rel-1.0.x
分支。v2.0.0
因此我们将commit标记B
为,v2.0.0
并rel-2.0.x
从中创建一个分支以进行质量检查。v1.0.0
)中发现了一个错误,必须立即进行修复和部署。在这一点上,我不确定我们应该如何处理。如果该错误位于主干中,则可以从该主干创建一个修补程序分支,修复该错误并合并到主干中。然后,rel-1.0.1
从创建分支v1.0.0
,从主干中挑选修复程序,将其标记为v1.0.1
并部署。
现在,我感到奇怪的是,鉴于v1.0.1
提交是master
从分支中精心挑选master
并标记的,因此提交不是按原样进行的rel-1.0.1
。此外,如果还需要修复,rel-2.0.x
那么我们应该如何处理呢?我们是否应该再次从主干中挑选错误修复,并将其标记为其他版本,例如v2.0.1
?
这是我上面要做的图(请注意,v1.1代表上述文本的2.0版,并且是Second feature A fix
在准备v1.1
发行版时发生的)。
是否可以在 Github 中的组织级别启用分支保护规则,以便该组织的所有存储库部分为应用的分支继承这些规则。现在,在每个 repo 的基础上为同一组分支启用这些相同的规则集真的很麻烦。