如何在两个分支上合并具有冲突更改的yaml文件

时间:2020-06-05 08:58:07

标签: git merge yaml

我有一个YAML文件,可能会在git存储库中的两个不同分支上进行更改。为简单起见,让我们以该内容为基础开始并创建两个分支:

a: 1

如果我在一个分支上添加值为b的键1,在第二个分支上添加值为c的键2并尝试将两者合并,则会得到合并可以通过向合并策略-X theirs-X ours添加参数来解决冲突。不幸的是,在这两种情况下,最终的合并提交都会忽略一个分支的更改。

如果我正确理解它,这是预期的行为,因为git不会分析文件的内容,并且仅对每个分支上的diff起作用。但是,我最后要这样:

a: 1
b: 1
c: 1

有没有简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

Git使用简单的基于行的文本匹配来完成合并工作。通常,这不足以合并Yaml数据。不要尝试使用Git的合并算法合并任意yaml。使用文件的基本版本作为起点,并使用文件的两个分支提示版本作为要合并的更改,以其他方式进行自己的合并。

对于此特定示例,联合合并将有效,如flyx noted。这是一般情况,要困难得多且不受支持。请注意,顺便说一句,在Git在文件上声明合并冲突之后,您可以提取所有三个输入并运行git merge-file --union来生成一次工会合并,而无需在.gitattributes中进行特殊输入