【发布时间】:2016-08-21 08:02:25
【问题描述】:
我在 git 中遇到分支和合并问题。 我们有以下分支机构(它们是我们的产品,并且在客户处安装和支持时并行维护)
2015Edition1
2015Edition2
2016Edition1
2016Edition2
master
我们可以将这些分支视为发布分支。
问题如下。
2015Edition1 已分支,并且已将修复提交到分支 fix1。
2015Edition1
fix1\-- bugfix
修复合并回2015Edition1 并发布。
2015Edition1--------------merge
fix1\-- bugfix --/
然而,分支2015Edition2、2016Edition1、2016Edition2差异很大,这是由于二进制帮助文件、大量依赖于产品的图像等,以及源代码的更改从未合并回主代码。
有什么方法可以合并fix1 分支,只获取fix1 中的提交
我想要的结果如下:
2015Edition1--------------merge--
fix1\-- bugfix --/
\
----------merge--
2016Edition2fix/
2016Edition2 --
我知道我可以挑选提交到其他分支。但这是一个非常简化的例子。而且我认为我失去了在提交存在的分支中跟踪的能力。
任何cmets和建议
【问题讨论】:
-
简短回答:不。您可以与
--no-commit进行合并,清除所有合并结果,用樱桃挑选的效果替换它们(使用git cherry-pick -n),然后提交;但这是一个糟糕的策略,最终会导致眼泪。 -
是的,这就是为什么我想避免这种情况。我认为也许 git merge-base 2015Edition1 2016Edition2Edition 可以指出分支开始不同的地方。但我不知道源代码在这一点上是否存在。 (因此很难修复 :) 中的错误
标签: git merge branch diff cherry-pick