问题标签 [feature-branch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Git / Subversion 中的功能反向移植
Git
使用or实现以下工作流程的首选方法是什么Subversion
(我对这个版本更感兴趣Git
,但比较肯定会有用):
假设我们最近发布了该产品的主要版本,并且有一个特定的 polisihin 分支,名为
release-2.0.x
.然后开发继续进行,几个功能分支被合并到
master/trunk
(它们稍后将成为即将到来的部分release-2.1.x
)。现在,在某个时候,另一个特性(即
critical-feature
)被开发并合并回master/trunk
. 我们意识到这个特性是如此重要,以至于我们必须将它反向移植到release-2.0.x
.
这是所描述案例的一个小伪图解。release-2.0.x
请注意,顶部的所有内容都会导致与当前之间的树差异master/trunk
并导致合并问题(否则我可以简单地合并critical-feature
并避免写这个问题:)
问题:
从这个角度来看,执行功能反向移植的最佳方式是
VCS
什么?这应该作为具有解决冲突冲突
merge
的相应分支的简单来完成吗?critical-feature
或者这应该作为
cherry-pick
提交的 完成,它在完成时合并critical-feature
到master/trunk
?或者甚至可能作为分支cherry-picks
中每个提交的一组critical-feature
?你能为冲突解决程序提供一些建议吗?如果
release-2.0.x
和之间的当前差异master/trunk
如此之大,“幼稚”的反向移植会由于代码重构和缺少功能而导致大量冲突,或者API
在release-2.0.x
?除了标准的合并或挑选方法之外,是否
Git
或有针对此例程提供的特定内容?Subversion
我想在冲突数量很大的情况下,重新设置基准不会有帮助,但是,显然,我可能是错的。
git - CruiseControl.Net 中的 Git 功能分支
看起来 CruiseControl.Net 的 git 源代码控制提供程序只会监控一个 git 分支。有没有办法让它监控所有 git 分支?我知道您可以通过将“要构建的分支”设置为“**”在 Jenkins 中执行此操作。CruiseControl.Net 有类似的功能吗?
git - 我将如何配置 TeamCity 以支持源代码集成的 GitHub 拉取请求模型?
我们使用 TeamCity 和 GitHub Enterprise。我们使用 git 的开源式工作流程:mainline
每个组件都有一个存储库,当人们想要进行更改时,他们
- 分叉
mainline
到他们自己的账户(所以可能会有很多分叉) - 在他们的叉子中创建一个分支
- 实施变革
- 及时
mainline/master
了解在此期间发生的变化 - 提交拉取请求
fork/feature-branch
->mainline/master
我们对这个工作流程非常满意;它在主线看到任何更改之前强制进行代码审查(嗯,至少是一个手动步骤,希望涉及实际阅读代码并运行其测试),这在历史上一直是一个问题。如果作者是查看拉取请求的人,我们想使用 GH Status API(博客文章、API 文档)将合并按钮变为非绿色,但那是以后的事了。
我们设置了 TeamCity 7.1 来监视主线存储库并在看到更改时进行构建。但是,按照目前的设置方式,CI 仅在看到更改为mainline/master
.
我们应该如何在 TeamCity 中配置我们的 VCS 根,以便我们可以拥有相同的工作流程,但 CI 将触发基于主线 repo 分支中的分支的构建? 最好不需要我们单独注册每个分叉?
我已经阅读了 TeamCity 7.1 的功能分支文档(博客文章、发行说明、文档),但我不知道如何将其应用于我们的任意数量的分叉模型,而不是每个人的提交 -到功能分支中的主线。
git - git rebase 已共享的功能分支
我们希望使用变基作为我们“合并”代码的标准方式。我们还使用相当短暂的功能分支(少于 2 周),我们通过自动集成管理器将其推送到中央存储库(每个开发人员都有自己的个人存储库,并且更改首先被推送到那里,并且只有在以下情况下才会推送到中央存储库)构建和测试成功)
当我尝试变基时,我收到一条消息说分支已经分歧,并且无法推送到我的个人存储库,直到我首先从中提取并合并更改,即使这些更改与我刚刚变基的更改相同.
我应该做些什么来避免这种情况吗?或者这是我已经推送了这个功能分支的结果?我可以用我的重新定位版本替换分支吗?
在这种情况下是否有推荐的工作流程?
git - 管理相关的正在进行的 git 功能分支/分支集
最近,我似乎有这样的重复场景,即正在开发多个功能分支,其中一个功能分支(feature-b
在下图中)取决于对另一个未完成功能(在 中开发feature-a
)的支持:
每当我修改feature-a
(包括交互式变基以修复功能中的错误)时,我需要变基feature-b
到feature-a
. 这些是本地分支,所以我可以随意修改它们。
我经常遇到以下情况:
其中测试分支是正在开发的所有(相关)特征的组合,通过合并其上的所有相关特征分支产生(在图片master
中feature-b
,,feature-c
- 和暗示feature-a
)。
目前,特别是如果有更复杂的功能分支关系,我gitk
不断地打开可视化的分支关系,并维护 shell 脚本来自动做这个变基,但是这种方法看起来很脆弱,而且很麻烦。我想知道的:
- 有没有一种方法可以描述甚至自动检测分支关系,然后用一个命令尝试重新执行所描述的关系(在上面的简单示例中,通过变
feature-a
基或向头部添加新提交进行更改后,自动执行feature-b
变基的新负责人feature-a
)。 - 用于将一组分支重新定位到其他提交的GUI 工具(如果冲突会阻止操作,只需给出错误就可以了)?
- 管理这个分支混乱的其他想法?所涉及的意外复杂性会花费太多时间并消耗太多脑力。
git - 如何在 Git 中提取和删除合并的分支?
我有 7 个影响相同文件的分支,都已通过辅助分支合并到主分支中。其中一个分支不打算合并,因为它不稳定 - 我可以撤消该单个分支所做的更改吗?
假设我的存储库如下所示:
现在D在主人身上。我想删除它(但将其保留在 b4 分支中)。
git - 创建分支别名?
我正在研究从 starteam 切换到 Git。
目前,在starteam 中,我们使用具有特殊名称的“浮动视图”。这些浮动视图基本上像别名一样工作。因此,我们可以指定一个特定的别名来检出,我们将获得我们当前正在模型测试的分支。
这将如何在 Git 中完成?这基本上是我们的分支机构的组织方式:
这些都是分支
(Branch 2012.05.01
将master
在模型测试完成时合并。)
在我们的自动化脚本 (ant) 中,为了运行我们的模型部署,我们只需从名为model
. 这样,当我们更改我们正在模型测试的分支时,我们永远不必更改脚本,并且找出我们正在模型测试的视图就像找出model
分支引用的分支一样容易。
有没有这样的方法可以在 Git 中做类似的事情?
澄清:
- 我想要一个分支的别名。一个分支,而不是一个提交。
Branch 2012.05.01
表示打算在 2012.05.01 发货的分支,并不意味着 2012.05.01 时刻。- 我想要一个别名
Branch 2012.05.01
。Branch 2012.05.01
是一个集成分支,它不断被修改。但我不想将其引用为Branch 2012.05.01
,我想将其引用为model
。这样,我可以将别名更改为Branch 2012.07.11
,它将从该分支获取最新的代码,而无需更改任何结帐代码脚本。
git - git 工作流的功能分支统计信息
我当前的开发环境使用 git 进行 VCS,我们使用功能分支工作流程。我想达到可以生成有关每个功能的统计信息的程度。主要是,我希望能够确定一个功能需要多长时间才能完成,但其他统计数据也会很高兴看到,例如提交数、代码行数等。
主要考虑因素是为开发人员避免任何多余的工作/流程步骤,但我不反对实施一些简单的事情,例如“必须在功能开始工作之前创建功能分支”以捕获该时间戳。
我不确定收集所需信息的最佳方式。如果一个特性被合并到一个主线分支中并被删除,我会丢失它创建时间的历史。
我能看到的下一个解决方案将涉及一个post-checkout
钩子。类似于以下内容:https ://gist.github.com/4557894但我可以想到使用此方法的一些缺陷。
编辑:正如@mr_ndrsn https://github.com/rietta/git_time_extractor所指出的。关于如何使这样的工具在提交/提交消息之外关联到分支的想法?
git - 将功能分支重新定位到另一个功能分支
我正在处理两个(私有)功能分支。
在这些分支上工作了一会儿后,我发现我需要从 Branch1 中的 Branch2 进行更改。我想将 Branch2 中的更改重新定位到 Branch1。我想结束以下内容:
我很确定我需要将第二个分支重新定位到第一个分支,但我不完全确定正确的语法以及我应该检查哪个分支。
这个命令会产生预期的结果吗?
git - 使用 git 管理本地功能分支的最佳方法?
我正在研究使用 git 进行分支管理的一些更好的点,并基于本文做出了一些决定:
http://nvie.com/posts/a-successful-git-branching-model/
现在我们在这里有一个稍微简单的场景,在远程我们有master
和development_branch
. 就所有开发人员而言development_branch
,主要是从那里进行克隆,并且只有在我们有稳定版本时才会从开发合并到主库。
现在考虑到这一点,我们每个 sprint 都有一堆故事需要完成,所以我们目前所做的是克隆development_branch
然后为我们正在处理的故事/功能创建一个新分支,例如product_description_feature
. 然后处理这个本地分支,因此如果我们需要执行另一项任务或进行某种修复,我们可以development_branch
返回并从中分支。
现在问题是围绕以这种方式工作的过程,目前安全的选择似乎是以下过程:
- 克隆
development_branch
- 为任务创建新分支(我们将
feature_a
在本例中调用它) - 提交到
feature_a
分支直到任务完成 - 切换到本地
development_branch
- 将任何新的更改从原点拉下来(通常是经常发生的事情)
- 将更改合并
feature_a
到development_branch
- 将本地推
development_branch
送到原点 - 为下一个任务创建新分支
现在效果很好,每个人都很高兴,但是在以下场景中你想更频繁地拉取:
- 克隆
development_branch
- 为任务创建新分支(我们将
feature_b
在本例中调用它) - 提交到
feature_b
分支 - 你意识到一个障碍,必须拉最新的变化
- 切换到
development_branch
- 将原点
development_branch
拉到本地 - 切换到
feature_b
- 从
development_branch
本地合并到feature_b
- 继续工作直到完成
现在这看起来很安全,每个人都很高兴,但是我不确定我是否需要切换到development_branch
并下拉然后切换回来并合并到我的本地功能分支中。那么我在这里是否过于谨慎,应该从development_branch
原产地拉到当地feature_b
分支机构?
这似乎应该没问题,因为我所做的只是将更改直接放入我的本地功能分支而不更新我的本地development_branch
,然后如果我需要推送更改,我将再次切换、拉取、合并、推送。
那么有人可以确认这是否是好的做法等吗?
也不会过多地污染问题,因为这些功能分支只存在于每台开发人员的机器上,如果有人做了一半的任务,然后其他人需要接手,会发生什么?您可以将该分支推到原点并让他们将其取下然后对其进行处理,但随后需要进一步清理,所以我认为没有很好的方法来解决这个问题,但我很想听听如何其他人解决了这个问题,而不会远程创建一个过时功能分支的荒地。
还有一些需要提及的事情,我们目前只是 ffwd 合并,所以虽然在引用的原始文章中提到了 NOT ffwd 合并,但我看不出如何在不创建大量远程分支的情况下做到这一点。我使用的是 Tortoise GIT 而不是命令行,但这不应该真正改变任何东西。