我正在使用git-flow来维护我的分支,因此我有一个主人并开发分支。
在掌握之前,开发是几次提交(~50-100)。
但是,有必要提前将选择性功能从开发到主控。
我该怎么做?应该使用樱桃挑选?如果我在最终合并回主人之前再次对master进行修改会发生什么呢?
答案 0 :(得分:2)
您是否考虑过创建另一个开发分支,仅用于集成这些特定功能,然后使用rebase -i
删除您不想要的提交,或者选择您想要进入该分支的提交?
您似乎甚至可以使用git flow release分支执行此操作,但如果您这样做,则必须使用交互式rebase / removal方法。这不是发布的目的,但它至少让主人保持清洁。
在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...
此时,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>