Git 合并不标记冲突文本文件中的所有差异

Git Merge not marking up all differences in conflicting text files

我正在测试 GIT 分支合并和冲突解决以及对简单文本文件的更改。

我签出了一个名为 issue1 的分支,更新了 File_A 并提交了更改。

然后我签出 master,对 File_A 进行了多次更新并提交了更改

当我尝试 git merge issue1 时,我得到了预期的

Auto-merging /File_A
CONFLICT (content): Merge conflict in /File_A
Automatic merge failed; fix conflicts and then commit the result.

然而,当我打开文件时,冲突标记仅突出显示它发现的第一个差异,而不是其他任何差异。

<<<<<<< HEAD
<?xml version="1.0" encoding="utf-7" ?>
=======
<?xml version="1.0" encoding="utf-8"?>
>>>>>>> issue1

是否可以通过这种方式轻松突出显示所有差异,还是我必须使用不同的方法来解决冲突?

以下是我常用的一些命令。

快速概览

git diff -- shortstat master issue1 

每个文件的差异概述

git diff --stat master issue1

突出显示文件的两次提交之间的差异(而不是冲突)。这将强制输出到终端。请参阅 'git help config' diff.external 部分以使用外部差异编辑器。

git diff --no-ext-diff master issue1 -- File_A

如果要合并的文件包含更改但在文件的不同部分,它们不会显示为冲突。合并的(结果)文件将带来这两项更改。只有当两个文件都想更改相同的行时才会发生冲突。

我应该在发布问题之前继续阅读,这直接取自 git 合并帮助文件,该文件显示了为什么文件的所有区域都没有突出显示差异

冲突是如何呈现的 在合并期间,工作树文件会更新以反映合并的结果。 在对共同祖先的版本所做的更改中,非重叠的更改(即,您更改了文件的一个区域,而另一方保留该区域完好无损,反之亦然)被逐字合并到最终结果中。但是,当双方对同一区域进行更改时,Git 不能随机选择一方,并要求您通过留下双方对该区域所做的事情来解决它。