在Git中使用一种交替diff算法

在Git中使用一种交替diff算法,git,diff,Git,Diff,因为git是为源代码设计的,所以它的默认diff算法将一行视为最小的不可分割单元 我试图编辑一些在第80列用word包装的标记文件。添加一个句子可能会导致段落的其余部分标记为已更改 有没有办法让Git使用更适合文本的diff算法?我需要一个能将单词或句子视为不可分割的单位而不是线的单位?你可以试试git diff--word diff $ git diff --word-diff diff --git a/test.txt b/test.txt index 54585bb..a8cd97e 10

因为
git
是为源代码设计的,所以它的默认
diff
算法将一行视为最小的不可分割单元

我试图编辑一些在第80列用word包装的标记文件。添加一个句子可能会导致段落的其余部分标记为已更改


有没有办法让Git使用更适合文本的diff算法?我需要一个能将单词或句子视为不可分割的单位而不是线的单位?

你可以试试
git diff--word diff

$ git diff --word-diff
diff --git a/test.txt b/test.txt
index 54585bb..a8cd97e 100644
--- a/test.txt
+++ b/test.txt
@@ -1,7 +1,7 @@
Because git is designed for source code, its diff algorithms {+are bibbity +}
{+bobbity boo+} treat a line as the minimum indivisible unit. I am trying to edit 
some markdown files that are word wrapped at column 80. Adding a sentence can 
cause the rest of the paragraph to be marked as changed.

Is there a way to have Git use a diff algorithm more suited to text? One that 
treats words or sentences as indivisible units rather then lines?
 No newline at end of file

也许您正在寻找
word diff

--单词diff[=
]

使用
显示单词diff 划出已更改的单词。默认情况下, 单词由空格分隔;看见 --下面是单词diff regex。
默认为普通,并且必须是以下选项之一:

颜色

仅使用 颜色。暗示——颜色

朴素的

将单词显示为[-removed-]和 {添加}。不想逃跑 分隔符(如果它们出现在 输入,因此输出可能不明确

瓷器

使用特殊的基于行的格式 用于脚本消费。 添加/删除/未更改的管路是 以通常的统一差分格式打印 格式,以+/-/
行首字符 一直延伸到这条线的尽头。 表示输入中的换行符 靠一条自己的线

没有

再次禁用单词diff

请注意,尽管 第一种模式,颜色用于高亮显示 在所有模式下更改的零件,如果 启用


这里是一个自定义此(从)的示例。默认情况下,-word diff假定一个单词是非空白字符字符串。下面的命令将考虑由以下之一组成的词:

  • 字母数字字符和下划线的字符串
  • 单个非字符
  • 命令:

    git diff --color-words --word-diff-regex='[A-z0-9_]+|[^[:space:]]'
    

    最后一个标志可以全局设置:
    git config--global diff.wordRegex'[A-z0-9\+|[^[:space:]'
    。或者
    --word diff
    可以有一个可选的
    参数,如@manojlds所述。看见