带来从发展到掌握的选择性变革

时间:2013-07-29 08:37:09

标签: git git-flow

我正在使用git-flow来维护我的分支,因此我有一个主人并开发分支。

在掌握之前,开发是几次提交(~50-100)。

但是,有必要提前将选择性功能从开发到主控。

我该怎么做?应该使用樱桃挑选?如果我在最终合并回主人之前再次对master进行修改会发生什么呢?

4 个答案:

答案 0 :(得分:2)

您是否考虑过创建另一个开发分支,仅用于集成这些特定功能,然后使用rebase -i删除您不想要的提交,或者选择您想要进入该分支的提交?

您似乎甚至可以使用git flow release分支执行此操作,但如果您这样做,则必须使用交互式rebase / removal方法。这不是发布的目的,但它至少让主人保持清洁。

http://dymitruk.com/blog/2012/02/05/branch-per-feature/中详细记录了在发布时删除更改的过程,特别是在标题为“将功能输出比放入功能更强大”一节中。如果你的功能没有从同一个提交开始,你可能会有困难(如果你遵循git-flow,它们可能不是)。但你可以尝试充分利用它。

示例:交互式rebase

$ git checkout -b reduced_functionality_branch develop
$ git rebase -i sha1-for-previous-release-point
...remove the stuff you don't want...

此时,reduced_functionality_branch应仅包含您要发布的提交。

答案 1 :(得分:1)

你可以使用“git cherry-pick”

请注意,由于您提供了选择性提交,因此必须在源分支上完成提交。您也可能会遇到一些合并冲突。

答案 2 :(得分:1)

在这种情况下,Cherry-pick确实可以正常工作。当你进行rebase时,它看起来好像是在其余的工作之前提交了樱桃选择的更改,但这就是你得到的任何rebase。

正如CharlesB所说,挑选主人并不完全符合git-flow模型。但它并不遥远,它是解决您的特定问题的一种简单方法。

答案 3 :(得分:0)

在dev和master分支中使用.gitattributes并放在代码

下面
<file which is branch specific> merge=ours

在命令下运行

git config --global merge.ours.driver true

下次合并分支时,除<file which is branch specific>

外,所有内容都将合并