Что это значит, когда git показывает только каталог, содержащий неотслеживаемые файлы, но не сами файлы?

Относительный новичок к мерзавцу, так что это может быть что-то довольно простое. С другой стороны, я довольно долго искал этот ответ, прежде чем спрашивать.

В моем git-репозитории, если я создаю какие-либо файлы в определенном подкаталоге (на несколько уровней ниже основного каталога репозитория), и запускаю git statusgit не перечисляет файлы в этом каталоге, а только его имя.

Я бы подумал, что это как-то связано с количеством уровней вниз, но другие неотслеживаемые файлы в других подкаталогах с таким же количеством уровней (или более) перечислены без проблем.

Кто-нибудь знает, есть ли какая-либо настройка или какая-то запись в каком-либо файле, где это может вызвать такое поведение?

1 ответ

Решение

По умолчанию не отображаются файлы внутри неотслеживаемых каталогов из-за соображений производительности. ls неотслеживаемый каталог, как git не имеет его содержание проиндексировано.

От git help status:

-u[<mode>]

--untracked-files[=<mode>]

Показать неотслеживаемые файлы.

mode параметр является необязательным (по умолчанию all) и используется для указания обработки неотслеживаемых файлов.

Возможные варианты:

no - не показывать неотслеживаемые файлы

normal - показывает неотслеживаемые файлы и каталоги

all - Также показывает отдельные файлы в неотслеживаемых каталогах.

когда -u опция не используется, отображаются неотслеживаемые файлы и каталоги (то же самое, что и указание normal), чтобы не забыть добавить недавно созданные файлы. Поскольку для поиска неотслеживаемых файлов в файловой системе требуется дополнительная работа, этот режим может занять некоторое время в большом рабочем дереве. Ты можешь использовать no иметь git status вернуться быстрее, не показывая неотслеживаемых файлов.

Значение по умолчанию можно изменить с помощью status.showUntrackedFiles переменная конфигурации, задокументированная в git-config (1).

Другие вопросы по тегам