Как использовать , awkчтобы показать только те , +и -линию, учет любого цвета или форматирование текста git diffможет быть вывод:
Ни один из других ответов здесь (включая мой другой ответ ) не сделает именно то, что вы хотите, на 100% правильно. Этот ответ, однако, будет. Вот однострочный файл, который вы можете скопировать и вставить в свой терминал. Я только что сделал его несколькими строками для удобства чтения - вы можете скопировать и вставить его одинаково, так что я могу сделать его читабельным! Он полагается на awkязык программирования:
git diff --color=always "$@" | awk '
# 1. Match and then skip "--- a/" and "+++ b/" lines
/^(\033\[(([0-9]{1,2};?){1,10})m)?(--- a\/|\+\+\+ b\/)/ {
next
}
# 2. Now print the remaining "+" and "-" lines ONLY! Note: doing step 1 above first was required or
# else those lines would have been matched by this matcher below too since they also begin with
# the "+" and "-" symbols.
/^(\033\[(([0-9]{1,2};?){1,10})m)?[-+]/ {
print $0
}
' | less -RFX
Вот его особенности. Все эти функции, взятые вместе, решают недостатки любого другого ответа здесь:
- Он обрабатывает цветной И бесцветный вывод. Вот что делает это регулярное выражение:
^(\033\[(([0-9]{1,2};?){1,10})m)?
- Он обрабатывает ВСЕ ЦВЕТА и ВСЕ ОПЦИИ ФОРМАТИРОВАНИЯ ТЕКСТА, включая полужирный шрифт, курсив, зачеркивание и т. Д., Которые вы можете установить в своих
git configнастройках . Вот почему в приведенном выше регулярном выражении есть ;?и {1,10}: если оно обнаруживает начало кода форматирования цвета или текста, оно сопоставляет до 10 последовательностей этих комбинированных кодов ANSI.
Он также НЕ включает строки, которые начинаются с @@и слова diff, как принятый ответ . Если вам действительно нужны эти строки (которые, откровенно говоря, я считаю полезными :)), сделайте вместо этого:
git diff --unified=0
или
git diff -U0
Вывод выводится точно так же, как git diffи в lessпейджере с дополнительным выводом цвета ( -R), и только если текст> 1 страницы ( -F), и при сохранении текущей страницы текста на экране при использовании quit ( -X) ,
Он также имеет то преимущество, что он мощный и легко настраиваемый, поскольку он использует язык программирования awk.
Если вы заинтересованы в изучении awk , вот несколько ресурсов:
gawk(GNU awk) руководство: https://www.gnu.org/software/gawk/manual/html_node/index.html#SEC_Contents
- Исследование
git diffnи комментарии к нему: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh
- Если вы
git diffnтоже хотите , то есть git diffс номерами строк, см. Здесь: Git diff с номерами строк (журнал Git с номерами строк)
- Некоторые примеры тестов awk "hello world" и синтаксиса: https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/tree/master/awk
В качестве бонуса я также завернул приведенное выше, чтобы использовать его как git diffc, что означает «git diff для отображения ТОЛЬКО 'c'hanges'». Использование является идентичным с git diff; просто используйте git diffcвместо этого! Он поддерживает ВСЕ параметры. Цвет по умолчанию включен. Чтобы выключить его, просто используйте git diffc --no-colorили git diffc --color=never. Подробнее man git diffсм.
Поскольку я только что закончил git diffn(инструмент для отображения git diffномеров строк) вчера вечером, писать git diffcбыло тривиально. Я решил, что лучше сделаю это сейчас, пока в моей голове еще свежи знания.
Установить git diffc:
Следуйте инструкциям в конце этого ответа здесь , за исключением того, что вы видите git-diffnв инструкциях, используйте git-diffcвместо этого. Это wgetтоже входит в команду. Скачать и установить git diffcочень просто: это всего несколько команд.