Способ проверки файла.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}.*,,'
Не совсем красиво, но это работает.