2013-12-21 4 views
1

Если я бегу git diff я получаю этумерзавец выход дифф только измененные строки

diff --git a/README b/README 
index 8d78ee4..67451cd 100644 
--- a/README 
+++ b/README 
@@ -1,3 +1,3 @@ 
dog 
-cat 
+fox 
bird 

Однако я только хочу, чтобы это

-cat 
+fox 

Я закончил с использованием этой

git diff --color | awk '/^\033\[3[12]m/' 
+0

Из любопытства: почему вы хотите изменить строки без какого-либо контекста? Если у вас несколько измененных строк, все будет усложняться ... – eckes

ответ

2

Это работает на моей системе:

git diff --color | grep -P '\e\[3[12]m' 

Он использует вывод цвета, чтобы различать эти строки. При поиске маркеров зеленого и красного цветов он должен печатать только добавленные и удаленные строки.

This answer может помочь понять цветовой аспект больше, если вам нужно его изменить.

1

Вы можете использовать флаг -U или --unified, чтобы указать, сколько контекста показывать.

-U<n>, --unified=<n> 
    Generate diffs with <n> lines of context instead of the usual three. Implies -p. 

Вы хотите -U0 или --unified=0.

Насколько я знаю, git не обеспечивает способ подавления заголовка.

+1

Это лишь частичный ответ. Для примера OP, который будет подавлять две строки из семи, просят подавить. – hvd

0

СЭД

git diff | sed '/^i/{N;N};/^[-+]/b;d' 

AWK

git diff | awk '/^i/{c=NR}NR>c+2&&/^[-+]/' 

С обоих решений:

  1. Отфильтровывать +++ и --- линий
  2. Фильтр в оных ed и удаленные строки
Смежные вопросы