5

我正在使用 git-flow 来维护我的分支,因此我有一个大师和开发分支。

开发是在 master 之前的几个提交(~50-100)。

但是,需要提前将选择性功能从开发阶段带到掌握阶段。

我怎样才能做到这一点?应该使用cherry-pick吗?如果我在最终合并回 master 之前再次在 master 上重新开发会发生什么?

4

4 回答 4

3

您是否考虑过创建另一个开发分支只是为了集成这些特定功能,然后使用rebase -i删除您不想要的提交,或者将您想要的提交挑选到该分支中?

似乎您甚至可以使用 git flow release 分支来执行此操作,但如果您这样做,则必须使用交互式 rebase/removal 方法。这不是发布的预期方式,但至少可以保持 master 干净。

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

示例:交互式变基

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

此时,reduce_functionality_branch 应该只包含您想要发布的提交。

于 2013-07-30T21:32:27.190 回答
1

在这种情况下,Cherry-pick 确实应该可以正常工作。当您变基时,看起来就像在其余工作之前提交了精心挑选的更改,但这就是您通过任何变基得到的。

正如 CharlesB 所说,樱桃采摘到 master 并不完全符合 git-flow 模型。但这并不遥远,它是解决您的特定问题的一种很好的简单方法。

于 2013-07-29T10:49:26.630 回答
1

您可以使用“git cherry-pick”

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

于 2013-07-29T08:44:24.120 回答
0

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

<file which is branch specific> merge=ours

运行以下命令

git config --global merge.ours.driver true

下次合并分支时,所有东西都会被合并,除了<file which is branch specific>

于 2015-04-17T00:27:07.490 回答