У меня есть два файла, old.txt
:
Line 1
Line 2
Line 3
Line4
Line5
Line 7
Line 7
Line 8
и new.txt
:
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Если я запускаю git diff --no-index --word-diff-regex=. old.txt new.txt
, то это показывает, что единственными изменениями являются пробелыисправляет в строках 4 и 5 и исправляет неправильное число в строке 6:
diff --git a/old.txt b/new.txt
index be8495f..a982fdc 100644
--- a/old.txt
+++ b/new.txt
@@ -1,8 +1,8 @@
Line 1
Line 2
Line 3
Line{+ +}4
Line{+ +}5
Line [-7-]{+6+}
Line 7
Line 8
К сожалению, также отображаются неизмененные строки (от 1 до 3, 7 и 8), но это можно исправить, удалив строки контекстас --unified=0
, например git diff --no-index --unified=0 --word-diff-regex=. old.txt new.txt
:
diff --git a/old.txt b/new.txt
index be8495f..a982fdc 100644
--- a/old.txt
+++ b/new.txt
@@ -4,3 +4,3 @@ Line 3
Line{+ +}4
Line{+ +}5
Line [-7-]{+6+}
Однако в случае, когда регулярное выражение word-diff было настроено так, чтобы игнорировать различия в пробелах, например git diff --no-index --unified=0 --word-diff-regex="[^[:space:]]" old.txt new.txt
, оно показывает:
diff --git a/old.txt b/new.txt
index be8495f..a982fdc 100644
--- a/old.txt
+++ b/new.txt
@@ -4,3 +4,3 @@ Line 3
Line 4
Line 5
Line [-7-]{+6+}
Обратите внимание, что строки 4 и 5 теперь не показывают изменений, но все же появляются в выходных данных.Это, вероятно, происходит потому, что в отличие от строк с 1 по 3 эти строки не полностью идентичны.
Однако есть ли опция git
, чтобы не показывать строки, когда они не изменены в соответствии со словом-diff-regex?