git ls-файлы исключают файлы в каталоге - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь запустить git ls-files и исключить из него указанный каталог c. Флаг --exclude исключает только шаблоны файлов, а не каталоги?

git ls-files -x */util/*

1 Ответ

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

Как указано в документации , -x принимает аргумент образца , поэтому он исключает только шаблоны.

Но Git только хранит файлы: «каталоги» или «папки» существуют только в воображении - и, увы, в реальности - операционной системы вашего компьютера, а не в Git. Git просто имеет файлы с именем foo/util/bar или что-то еще. Но это нормально: если ваш компьютер настаивает на хранении файла с именем bar в каталоге / папке с именем util внутри каталога / папки с именем foo, когда Git хранит файл с именем foo/util/bar, шаблон */util/* соответствует имени файла Git.

Обратите внимание, что -x исключает только неотслеживаемых файлов, поэтому влияет только на git ls-files вызовы, которые печатают имена файлов, найденных в рабочем дереве, а не те, которые печатают имена файлов, найденных в индексе. Файлы, хранящиеся в индексе, в буквальном смысле имеют длинные имена, которые могут содержать косую черту, например dir/sub/file.ext: index не имеет возможности хранить каталоги / папки. (Это , почему Git не может хранить пустой каталог. Git создает новые коммиты из того, что находится в индексе, а индекс не хранит каталоги, поэтому Git не может создать коммит, содержащий пустой каталог.)

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