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

标签 git merge

我们正在对我们的网站进行重大修订。修改后的站点上的所有工作都在一个 git 分支(称为 2.0)中完成,该分支是前一段时间从 master 分支出来的。在此过程中,已经进行了一些小的和重要的更改以掌握,我们希望将这些更改 merge 到 2.0 中。

然而,将其作为一个大型 merge 来执行似乎很笨拙——虽然一些更改会很好地 merge ,但其中一些涉及 2.0 上不再存在的代码,并且基本上需要在 2.0 上重新实现新功能。只要 merge 后还有一堆 Unresolved 冲突,修复这些功能可能会非常困难。我们考虑过使用 cherry-pick 只从 master 带来那些可以很好地 merge 的更改,同时手动重新实现主要更改,但我认为如果我们想将 2.0 中的所有更改 merge 回大师。

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

最佳答案

您当然可以通过引用提交哈希而不是分支名称来零散地 merge 到一个分支中。所以说你想 merge 到 master 行上的特定提交 - 假设它是 abcd1234 - 你可以简单地进入你的 2.0 分支并运行:

git merge abcd1234

使用这种方法,您可以随心所欲地一次提交任意数量的提交。如果您遇到冲突,您可以只解决那个冲突,而不必一次处理所有冲突。

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

git merge --strategy=ours bcde2345

这将为 master 上的更改创建一个 merge 提交,但不会更改树的内容与它们在 2.0 上的内容,因此提交将是标记为已 merge ,实际上没有做任何事情。

关于Git:主要版本更改的分段 merge 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8659544/

相关文章:

git - 提交前当前更改的差异

git - 我如何让 git 使用 Textmate 作为我的默认编辑器?

python - Pandas 合并创建不需要的重复条目

oracle - 与 Dual 合并在 12c 中不起作用

r - 如何合并数据框中的行并组合单元格中的因子值

git - 无法选择一个提交到分支(坏对象错误)

c# - 在 C# 中合并两个列表

javascript - 在两个 NodeJS 微服务之间共享自定义代码

xcode - 我如何让 Xcode 和 Git 相信我的 Assets 目录已经更新?

git - 无法从 Bonobo Git Server pull 或克隆