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

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

Ответ 1

Не совсем. Одна команда, которая могла бы приблизиться, была бы 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

Ответ 2

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

#!/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".