Отфильтруйте git diff по типу change

Есть ли способ ограничить git diff измененными файлами?

Я хотел бы увидеть различия между двумя коммитами, но исключить пути, которые не существуют в одно или другое (добавления / удаления). Следующий однострочник Perl иллюстрирует большую часть того, что я хочу:

git diff master.. | perl -lnwe 'print unless /^(new|deleted) file/../^diff/ and not /^diff/'

Но остается diff --git a / path b / path строк для новых или удаленных файлов. Кроме того, было бы намного лучше, если бы мне не приходилось разбирать (например, он не работает, если какой-либо кусок содержит что-либо, совпадающее с / ^ diff /).

Еще одна альтернатива, которую я пробовал:

git diff --name-status (args) | perl -lnwe 'print if s/^M\s+//' | xargs git diff (args) --

но все равно кажется хакерским.

105
задан benizi 29 July 2011 в 22:05
поделиться