Есть ли простой способ показать правила .gitignore, которые не соответствуют ни одному файлу в дереве каталогов? - PullRequest
3 голосов
/ 20 февраля 2020

Мне нужно очистить мой файл .gitignore. Я запускаю некоторые команды, а затем go через файл .gitignore и удаляю все ненужные строки.

Команда находит все файлы в дереве, запускает команду git check-ignore, Выпадает только совпадения, которые есть в моем файле .gitignore, очищает строку и затем однозначно сортирует результаты. Любое правило, которое не появляется в этих выходных данных, является кандидатом на удаление.

find . -type f -not -path .git -exec git check-ignore -v '{}' \; | grep '^.gitignore:' | sed 's/.*:\(.*\)\t.*$/\1/' | sort -u >> .gitignore

Эта команда может занять довольно много времени, особенно в репозиториях с большим количеством файлов, смонтированных в NFS.

Есть ли более простой метод, который покажет мне правила, которые не соответствуют ни одному файлу в дереве?

1 Ответ

1 голос
/ 20 февраля 2020

Вы можете использовать git status --ignored = match , чтобы получить список игнорируемых файлов, которые соответствуют шаблону в .gitignore.

git status -s --ignored=matching | grep "^\!\!" | awk '{print $2}' | xargs git check-ignore -v | grep '^.gitignore:' | sed 's/.*:\(.*\)\t.*$/\1/' | sort -u >> .gitignore
...