Git:主要版本更改的分段合并方法?

时间:2011-12-28 18:04:42

标签: git merge

我们正在对我们的网站进行重大修订。修改后的网站上的所有工作都是在一个git分支(称之为2.0)中完成的,该分支在不久前从master中分支出来。在此过程中,一些变化,无论是次要的还是重要的,都已经被掌握,我们希望将这些变化合并到2.0。

但是,将其作为一个大型合并进行操作似乎很笨拙 - 虽然一些更改将很好地合并,其中一些涉及2.0上不再存在的代码,并且基本上需要在2.0上重新实现新功能。只要合并后存在大量未解决的冲突,修复这些功能可能会非常困难。我们已经考虑过使用cherry-pick来只带来那些可以很好地合并的master的更改,同时手动重新实现主要的更改,但如果我们想要将2.0中的所有更改合并回来,那将会造成麻烦主

理想情况下,我可以从master到2.0进行分段合并 - 将一组次要提交合并到一个特定的提交,然后合并一个主要提交并手动重新实现一个特定的新功能,然后另一个系列,在这样的一种方式,最后,master完全合并到2.0。对于这种情况,这是一个好方法吗?如果是这样,我如何合并到master中,而不是一直到最近的主提交?或者我应该采取其他更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您当然可以通过引用提交哈希而不是分支名称来合并分支。所以说你想合并到master行的特定提交 - 让我们说它是abcd1234 - 你可以直接进入你的2.0分支并运行:

git merge abcd1234

使用这种方法,您可以根据需要一次提交尽可能多的提交。如果您遇到冲突,您可以解决这一冲突,而无需立即全部解决。

如果您知道的master分支上的更改仅与您的分支上不存在的代码相关,因此完全过时,则可以运行:

git merge --strategy=ours bcde2345

这将为master上的更改创建合并提交,但不会更改树的内容2.0,因此提交将被标记为合并而不实际执行任何东西。