Есть ли возможность ограничить git diff
заданным набором расширений файлов?
Какой вариант следует использовать, ограничивая git diff заданным набором расширений файлов?
Ответ 1
Да, если вы убедитесь, что git расширяет glob, а не вашу оболочку, то он будет соответствовать любому уровню, поэтому что-то вроде этого (цитаты важны) должно работать нормально.
git diff -- '*.c' '*.h'
Ответ 2
Либо используйте shell globstar (который выполняет рекурсивный поиск) 1 2 :
shopt -s globstar
git diff -- *.py **/*.py
или используйте find:
find -name '*.py' -print0 | xargs -0 git diff --
Оба они являются специальными именами и доказательством пробелов. Хотя вы можете захотеть отфильтровать каталоги с расширением .py:)
1 Мне нравится делать git diff -- {.,**}/*.py
обычно
2 Когда globstar включен, git diff -- **/*.py
уже включает ./*.py
. В Bash manpage: 'Если за ним следует /, два соседних * s будут соответствовать только каталогам и подкаталогам.'
Ответ 3
Для простых шаблонов файлов это работает:
$ git ls-files -zm '*.txt' | xargs --null git diff
Пробел безопасен, и вы можете также иметь несколько расширений:
$ git ls-files -zm '*.h|*.c|*.cpp' | xargs --null git diff
Ответ 4
Аргумент командной строки для расширения.
git diff *.py
В качестве альтернативы вы можете передать find
в git diff
:
find . -name '*.py' -type f | git diff --
Ответ 5
Ни один из приведенных выше ответов не работает для меня под git bash
в Windows. Я не уверен, что это вещь версии (я использую 1.8.4) или Windows/bash; также, в моем случае, я хотел разделить две ветки, где каждая ветвь имела дополнительные файлы, не присутствующие в другой ветке (при этом "находки" основаны на ошибках).
В любом случае это сработало для меня (в моем примере, ищут разницу между файлами python):
git diff branch1 branch2 -- `git diff --summary branch1 branch2 | egrep '\.py$' | cut -d ' ' -f 5`
Ответ 6
git diff
будет отображаться только отличия в неустановленных файлах.
Я нашел этот вопрос, потому что я хотел исключить .info
файлы из git diff
. Я достиг этого, расположив его с помощью git add *.info
, что уменьшает оставшиеся файлы.