Способ проверки файла.gitignore

Есть ли способ проверить файл.gitignore, чтобы вы могли быстро найти двойные пути или пути, которые больше не существуют? Обычно, когда проект небольшой, в этом нет особой необходимости, но с большим количеством веток и слиянием файлов.gitignore это может быть под рукой.

3 ответа

Не совсем.
Одна команда, которая могла бы приблизиться, была бы git check-ignore

Выберите файл, который, как вы знаете, предполагается игнорировать, и проверьте вывод:

git check-ignore -v -- /path/to/ignored/file

Вы увидите правила вашего .gitignore которые применяются.


Обновление марта 2016: Git 2.8 добавит новый способ отладки .gitignore файлы и их правила.

В контексте разрешения игнорировать подпапку (даже если ее родительская папка игнорируется: см. Пример здесь), я нашел этот драгоценный камень от Thái Ngọc Duy ( pclouds ):

dir.c: отслеживание поддержки исключить

man gitвключает в себя:

GIT_TRACE_EXCLUDE:

Включает трассировку сообщений, которые могут помочь при отладке.gitignore обработка.
Увидеть ' GIT_TRACE ' для доступных опций вывода трассировки.

С GIT_TRACE_EXCLUDE установите в 1, вы увидите (после git status) отладочные сообщения stderr, такие как:

exclude: from ...
exclude: xxx => n/a
exclude: xxx vs. yyy at line z: => www

Вы можете сделать скрипт, чтобы проверить это. Я сделал один для вас там:

#!/bin/bash
set -o noglob
for file in `cat .gitignore | grep -v \#`
do
    printf "$file"
    find . -name "$file" | wc -l
done

он будет отображать правила с последующим номером совпадения в текущем каталоге и рекурсивно. Пример:

*.log     31
*.gz      0
*~     42
*.swp      0
*.aux     33
*.pdf     51
*.out      7
*.toc      6
*.nav      1
*.snm      1
.DS_Store      0

Вы можете ограничить вывод строкой, содержащей 0 по трубам egrep "\b0\b" если ты хочешь.

Чтобы также проверить шаблон git ** в путях, я должен был написать однострочную строку, вдохновленную сценарием выше:

find . -type f | git check-ignore -v --stdin | perl -pe 's,.*\.gitignore:,,; s,\t," "x100,e' | sort | uniq -w 100 -c | perl -pe 's, {100}.*,,'

Не совсем красиво, но это работает.

Другие вопросы по тегам