首页 > 解决方案 > 如何使用 Git 合并一行内的更改?

问题描述

假设以下情况:

  1. 创建一个包含内容的文件Hello World!,添加它,提交。
  2. 将其更改为Hi World!一个分支,然后更改Hello World为另一个分支。
  3. 现在合并它们会导致冲突,因为两个更改都在同一行。

考虑我们在不同行上分隔更改的替代方案: 1. 创建一个包含内容的文件Hello\nWorld\n!。(我用 . 表示换行符\n。) 2. 像以前一样应用类似的更改。3. 现在突然合并就可以了。

但是换行符和其他字符一样。为什么合并对待它如此特殊?

更重要的是,是否有 git 兼容的合并工具可以合并我的第一个示例而不会发生冲突,即是否可以在一行内合并更改?

标签: gitmergediff

解决方案


所有 VCS 中的所有(标准)合并工具都是基于行的(只是因为diffpatch在引擎盖下是基于行的,文本行是原子的,甚至没有评估更大或更小的对象)......我会尽量不要提及差异的“上下文”和“统一”格式以及相关的“帅哥”头痛

您的问题的常见答案 - “不,现在野生网络中没有这样的合并(至少是众所周知的并且来自信誉良好的来源)。但是 - 您可以编写它并在 Git 中用作特殊的自定义合并工具”

PS - 来自链接答案的涂抹|清洁过滤器方法似乎是一个更有希望的(至少对我而言)解决方案


推荐阅读