одна команда, чтобы найти все git игнорируемых файлов и почему они игнорируются - PullRequest
3 голосов
/ 19 апреля 2020

Я могу узнать, какие файлы игнорируются с

git status --ignored

Я могу выяснить, почему один файл игнорируется с

git check-ignore -v somefile

Как объединить два? Мои слабые попытки не работают. Выражения типа

git check-ignore -v .

или

get check-ignore -v **/*

оказываются короткими; они перечисляют только крошечную часть файлов, перечисленных в git status --ignored. (Например, .DS_Store файлы вообще не появляются.)

Лучшее, что я мог придумать, с моим слабым unix фу, это:

git status --ignored | tr -d '\t' | git check-ignore --verbose --stdin

Но он выдает ошибку в последней пустой строке вывода status, и кажется сумасшедшим, что я вообще должен играть в эти трубочные игры.

Ответы [ 2 ]

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

Швейцарский армейский нож из списка git знает git ls-files.

git ls-files --exclude-standard -oi

перечислит все неиндексированные игнорируемые файлы. И git check-ignore имеет опцию --stdin, так что ...

git ls-files --exclude-standard -oi | git check-ignore -vn --stdin

делает то, что вы хотите, примерно как можно быстрее. Я хочу, чтобы параметр --exclude-standard достаточно часто, чтобы у меня был глобальный псевдоним для него, git config --global alias.ls "ls-files --exclude-standard", поэтому для меня это будет git ls -oi | git check-ignore -vn --stdin.

1 голос
/ 19 апреля 2020

In Bash 4 +:

Включить globstar и dotglob:

shopt -s globstar
shopt -s dotglob

и:

git check-ignore -v **/*

In zsh globstar (известный как рекурсивное сглаживание ) включен по умолчанию, поэтому просто включите dotglob:

setopt dotglob

и:

git check-ignore -v **/*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...