Git diff: показывать ТОЛЬКО изменения, не соответствующие шаблону - PullRequest
0 голосов
/ 23 ноября 2018

Можно ли сказать git diff, что линии, начинающиеся с некоторого шаблона, не изменяются?

Например, рассмотрим следующее:

$ git diff -U0
diff --git a/file_a.txt b/file_a.txt
index 26ed843..4071ff8 100644
--- a/file_a.txt
+++ b/file_a.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
diff --git a/file_b.txt b/file_b.txt
index c6d051e..4b3cf22 100644
--- a/file_b.txt
+++ b/file_b.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
@@ -48,0 +49 @@
+   this is important  
@@ -56,0 +58 @@
+   this is also important

Строки, начинающиеся со звездочки (регулярное выражениеpattern "^[[:space:]]*\*.*") не важны, и я хотел бы отфильтровать файлы, содержащие изменения в таких строках, только из вывода git diff.В приведенном выше примере выходные данные должны сообщать только об изменениях file_b.txt.Возможно ли это?

1 Ответ

0 голосов
/ 23 ноября 2018

Возможно с флагом git diff -G и созданием инвертирования регулярного выражения для сопоставления строк, что первый символ, который не является пробелом, не является ни *, ни пробелом.

-G '^[[:space:]]*[^[:space:]*]'

Не очень эффективно, потому что будетоткат назад, но выглядит отрицательно '^(?!\s*\*)', квантификатор притяжений '^\s*+[^*]' или атомные группы '^(?>\s*)[^*]' не поддерживаются.

...