Русский ▾ Topics ▾ Latest version ▾ git-ls-files last updated in 2.46.1

НАЗВАНИЕ

git-ls-files — Показать информацию о файлах в индексе и рабочем каталоге

ОБЗОР

git ls-files [-z] [-t] [-v] [-f]
		[-c|--cached] [-d|--deleted] [-o|--others] [-i|--ignored]
		[-s|--stage] [-u|--unmerged] [-k|--killed] [-m|--modified]
		[--resolve-undo]
		[--directory [--no-empty-directory]] [--eol]
		[--deduplicate]
		[-x <шаблон>|--exclude=<шаблон>]
		[-X <файл>|--exclude-from=<файл>]
		[--exclude-per-directory=<файл>]
		[--exclude-standard]
		[--error-unmatch] [--with-tree=<указатель-дерева>]
		[--full-name] [--recurse-submodules]
		[--abbrev[=<число>]] [--format=<формат>] [--] [<файл>…​]

ОПИСАНИЕ

Эта команда объединяет список файлов в индексе с фактическим списком рабочего каталога и показывает различные комбинации из двух.

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

ПАРАМЕТРЫ

-c
--cached

Показывать все файлы, кэшированные в индексе Git, т.е. все отслеживаемые файлы. (Это значение по умолчанию, если не указаны параметры -c/-s/-d/-o/-u/-k/-m/--resolve-undo.)

-d
--deleted

Показывать файлы с неиндексированным удалением

-m
--modified

Показывать файлы с неиндексированным изменением (обратите внимание, что неиндексированное удаление также считается неиндексированным изменением)

-o
--others

Показывать другие (т.е. неотслеживаемые) файлы в выводе

-i
--ignored

Показывать в выводе только игнорируемые файлы. Должен использоваться либо с явным -c, либо с -o. При показе файлов в индексе (т.е. при использовании с -c) выводить только те файлы, которые соответствуют шаблону исключения. При показе "других" файлов (т.е. при использовании с -o) показывать только те, которые соответствуют шаблону исключения. Стандартные правила игнорирования не активируются автоматически; поэтому требуется хотя бы один из параметров --exclude*.

-s
--stage

Показывать в выводе биты режима проиндексированного содержимого, имя объекта и номер стадии.

--directory

Если целый каталог классифицируется как «другой», показывать только его имя (с конечным слешем), а не всё его содержимое. Не действует без -o/--others.

--no-empty-directory

Не выводить пустые каталоги. Не действует без --directory.

-u
--unmerged

Показывать в выводе информацию о не слитых файлах, но не показывать никакие другие отслеживаемые файлы (принудительно включает --stage, переопределяет --cached).

-k
--killed

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

--resolve-undo

Показывать файлы, имеющие в индексе информацию resolve-undo, вместе с их информацией resolve-undo. (Информация resolve-undo — это то, что используется для реализации "git checkout -m $PATH", т.е. для воссоздания конфликтов слияния, которые были случайно разрешены)

-z

Завершение строк \0 в выводе и не заключать имена файлов в кавычки. Дополнительную информацию см. в разделе ВЫВОД ниже.

--deduplicate

Когда показываются только имена файлов, подавлять дубликаты, которые могут возникнуть из-за наличия нескольких стадий во время слияния или одновременного указания параметров --deleted и --modified. Когда используется любой из параметров -t, --unmerged или --stage, этот параметр не действует.

-x <шаблон>
--exclude=<шаблон>

Пропускать неотслеживаемые файлы, соответствующие шаблону. Обратите внимание, что шаблон — это шаблон подстановочных знаков оболочки. Дополнительную информацию см. в разделе ШАБЛОНЫ ИСКЛЮЧЕНИЙ ниже.

-X <файл>
--exclude-from=<file>

Читать шаблоны исключений из <файла>; по одному на строку.

--exclude-per-directory=<file>

Читать дополнительные шаблоны исключений, которые применяются только к каталогу и его подкаталогам, из <файла>. Если вы пытаетесь эмулировать способ работы высокоуровневых команд, использование параметра --exclude-standard вместо этого проще и тщательнее.

--exclude-standard

Добавляет стандартные исключения Git: .git/info/exclude, .gitignore в каждом каталоге и глобальный файл исключений пользователя.

--error-unmatch

Если какой-либо <файл> не появляется в индексе, считать это ошибкой (возврат 1).

--with-tree=<tree-ish>

При использовании --error-unmatch для расширения предоставленных пользователем аргументов <файл> (т.е. шаблонов путей) до путей, предполагать, что пути, которые были удалены в индексе с момента указанного <указателя-дерева>, всё ещё присутствуют. Использование этого параметра с параметрами -s или -u не имеет смысла.

-t

Показывать теги статуса вместе с именами файлов. Обратите внимание, что для целей сценариев git-status[1] --porcelain и git-diff-files[1] --name-status почти всегда являются превосходными альтернативами; пользователям следует обратить внимание на git-status[1] --short или git-diff[1] --name-status для более удобных для пользователя альтернатив.

Этот параметр предоставляет причину для показа каждого имени файла в виде тега статуса (за которым следует пробел, а затем имя файла). Теги статуса — это отдельные символы из следующего списка:

H

отслеживаемый файл, который не является ни не слитым, ни skip-worktree

S

отслеживаемый файл с установленным флагом skip-worktree

M

отслеживаемый файл, который не слит

R

отслеживаемый файл с неиндексированным удалением

C

отслеживаемый файл с неиндексированным изменением

K

неотслеживаемые пути, которые являются частью конфликтов файл/каталог, препятствующих переключению отслеживаемых файлов

?

неотслеживаемый файл

U

файл с информацией resolve-undo

-v

Аналогично -t, но использовать строчные буквы для файлов, которые помечены как assume unchanged (см. git-update-index[1]).

-f

Аналогично -t, но использовать строчные буквы для файлов, которые помечены как fsmonitor valid (см. git-update-index[1]).

--full-name

При запуске из подкаталога команда обычно выводит пути относительно текущего каталога. Этот параметр заставляет выводить пути относительно верхнего каталога проекта.

--recurse-submodules

Рекурсивно вызывает ls-files для каждого активного подмодуля в репозитории. В настоящее время поддерживаются только режимы --cached и --stage.

--abbrev[=<n>]

Вместо отображения полных 40-байтовых шестнадцатеричных строк объектов, показывать кратчайший префикс длиной не менее <n> шестнадцатеричных цифр, который однозначно идентифицирует объект. Некоторое количество цифр, отличное от стандартного, можно указать с помощью --abbrev=<n>.

--debug

После каждой строки, описывающей файл, добавлять дополнительные данные о его записи в кэше. Это предназначено для отображения как можно большего количества информации для ручной проверки; точный формат может измениться в любое время.

--eol

Показывать <eolinfo> и <eolattr> файлов. <eolinfo> — это идентификация содержимого файла, используемая Git, когда атрибут "text" имеет значение "auto" (или не установлен, а core.autocrlf не равен false). <eolinfo> может быть "-text", "none", "lf", "crlf", "mixed" или "".

"" означает, что файл не является обычным файлом, он отсутствует в индексе или недоступен в рабочем каталоге.

<eolattr> — это атрибут, который используется при переключении или фиксации, он может быть "", "-text", "text", "text=auto", "text eol=lf", "text eol=crlf". Начиная с Git 2.10 поддерживаются "text=auto eol=lf" и "text=auto eol=crlf".

Для обычных файлов показываются как <eolinfo> в индексе ("i/<eolinfo>"), так и в рабочем каталоге ("w/<eolinfo>"), за которыми следует ("attr/<eolattr>").

--sparse

Если индекс разрежённый, показывать разрежённые каталоги без разворачивания до содержащихся в них файлов. Разрежённые каталоги будут показаны с конечным слешем, например "x/" для разрежённого каталога "x".

--format=<формат>

Строка, которая интерполирует %(имя-поля) из отображаемого результата. Она также интерполирует %% в %, а %xXX, где XX — шестнадцатеричные цифры, интерполирует в символ с шестнадцатеричным кодом XX; например, %x00 интерполируется в \0 (NUL), %x09 в \t (TAB), а %x0a в \n (LF). --format нельзя комбинировать с -s, -o, -k, -t, --resolve-undo и --eol.

--

Не рассматривать остальные аргументы командной строки в качестве параметров.

<file>

Файлы для отображения. Если файлы не указаны, отображаются все файлы, соответствующие другим указанным критериям.

ВЫВОД

git ls-files просто выводит имена файлов, если не указан --stage, в этом случае он выводит:

[<тег> ]<режим> <объект> <стадия> <файл>

git ls-files --eol покажет i/<eolinfo><ПРОБЕЛЫ>w/<eolinfo><ПРОБЕЛЫ>attr/<eolattr><ПРОБЕЛ*><TAB><файл>

git ls-files --unmerged и git ls-files --stage можно использовать для просмотра подробной информации о не слитых путях.

Для не слитого пути вместо записи одной пары режим/SHA-1 индекс записывает до трёх таких пар; одну из дерева O на стадии 1, A на стадии 2 и B на стадии 3. Эта информация может использоваться пользователем (или высокоуровневым интерфейсом), чтобы увидеть, что в конечном итоге должно быть записано по этому пути. (см. git-read-tree[1] для получения дополнительной информации о состоянии)

Без параметра -z пути с «необычными» символами берутся в кавычки, как это описано для переменной конфигурации core.quotePath (см. git-config[1]). С параметром -z имя файла выводится без изменений, а строка завершается байтом NUL.

Можно печатать в пользовательском формате, используя параметр --format, который может интерполировать различные поля с помощью обозначения %(имя-поля). Например, если вас интересуют только поля "objectname" и "path", вы можете выполнить команду с определённым "--format", например

git ls-files --format='%(objectname) %(path)'

ИМЕНА ПОЛЕЙ

Способ отображения каждого пути можно настроить с помощью параметра --format=<формат>, где %(имя-поля) в строке <формат> для различных аспектов записи индекса интерполируются. Распознаются следующие "имя-поля":

objectmode

Режим файла, который записан в индексе.

objecttype

Тип объекта файла, который записан в индексе.

objectname

Имя файла, которое записано в индексе.

objectsize[:padded]

Размер объекта файла, который записан в индексе ("-", если объект является commit или tree). Он также поддерживает дополненный формат размера с "%(objectsize:padded)".

stage

Стадия файла, которая записана в индексе.

eolinfo:index
eolinfo:worktree

<eolinfo> (см. описание параметра --eol) содержимого в индексе или в рабочем каталоге для пути.

eolattr

<eolattr> (см. описание параметра --eol), который применяется к пути.

путь

Имя пути файла, которое записано в индексе.

ШАБЛОНЫ ИСКЛЮЧЕНИЙ

git ls-files может использовать список "шаблонов исключений" при обходе дерева каталогов и поиске файлов для отображения, когда указаны флаги --others или --ignored. gitignore[5] определяет формат шаблонов исключений.

Эти шаблоны исключения могут быть указаны в следующих местах (в порядке очерёдности):

  1. Флаг командной строки --exclude=<шаблон> задаёт один шаблон. Шаблоны упорядочены в том же порядке, в котором они появляются в командной строке.

  2. Флаг командной строки --exclude-from=<файл> указывает файл, содержащий список шаблонов. Шаблоны упорядочены в том же порядке, в котором они появляются в файле.

  3. Флаг командной строки --exclude-per-directory=<имя> задаёт имя файла в каждом каталоге, который проверяет git ls-files, обычно .gitignore. Файлы в более глубоких каталогах имеют приоритет. Шаблоны упорядочены в том же порядке, в котором они появляются в файлах.

Шаблон, указанный в командной строке с --exclude или прочитанный из файла, указанного с --exclude-from, является относительным относительно вершины дерева каталогов. Шаблон, прочитанный из файла, указанного с --exclude-per-directory, является относительным относительно каталога, в котором находится файл шаблонов.

Как правило, вы можете использовать --exclude-standard, когда хотите, чтобы правила исключения применялись так же, как это делают высокоуровневые команды. Чтобы эмулировать то, что задаёт --exclude-standard, вы можете указать --exclude-per-directory=.gitignore, а затем указать:

  1. Файл, указанный переменной конфигурации core.excludesfile, если существует, или файл $XDG_CONFIG_HOME/git/ignore.

  2. Файл $GIT_DIR/info/exclude.

через параметр --exclude-from=.

СМ. ТАКЖЕ

GIT

Является частью пакета git[1]