我们正在对我们的网站进行重大修订.修改后的网站上的所有工作都是在一个git分支(称之为2.0)中完成的,该分支在不久前从master中分支出来.在此过程中,一些变化,无论是次要的还是重要的,都已经被掌握,我们希望将这些变化合并到2.0.
但是,将它作为一个大型合并进行操作似乎很笨拙 – 虽然一些更改将很好地合并,其中一些涉及2.0上不再存在的代码,并且基本上需要在2.0上重新实现新功能.只要合并后存在大量未解决的冲突,修复这些功能可能会非常困难.我们已经考虑过使用cherry-pick来只带来那些可以很好地合并的master的更改,同时手动重新实现主要的更改,但如果我们想要将2.0中的所有更改合并回来,那将会造成麻烦主.
理想情况下,我可以从master到2.0进行分段合并 – 将一组次要提交合并到特定提交,然后合并一个主要提交并手动重新实现一个特定的新功能,然后另一个系列,以这样的方式最后,master完全合并为2.0.对于这种情况,这是一个好方法吗?如果是这样,我如何合并到master中,而不是一直到最近的主提交?或者我应该采取其他一些更好的方法吗?
最佳答案 您当然可以通过引用提交哈希而不是分支名称来合并分支.所以说你想合并到主线上的特定提交 – 让我们说它是abcd1234 – 你可以简单地进入你的2.0分支并运行:
git merge abcd1234
使用此方法,您可以根据需要一次执行尽可能多的提交.如果您遇到冲突,您可以解决这一冲突,而无需立即全部解决.
如果您知道主分支上的更改仅与分支上不存在的代码相关,因此完全过时,则可以运行:
git merge --strategy=ours bcde2345
这将为master上的更改创建合并提交,但不会更改树中2.0的内容,因此提交将被标记为合并而不实际执行任何操作.