Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.46.2 → 2.54.0 no changes
-
2.46.1
2024-09-13
- 2.44.1 → 2.46.0 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 no changes
-
2.42.0
2023-08-21
- 2.40.1 → 2.41.3 no changes
-
2.40.0
2023-03-12
- 2.39.1 → 2.39.5 no changes
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 no changes
-
2.38.0
2022-10-02
- 2.36.1 → 2.37.7 no changes
-
2.36.0
2022-04-18
- 2.35.1 → 2.35.8 no changes
-
2.35.0
2022-01-24
- 2.31.1 → 2.34.8 no changes
-
2.31.0
2021-03-15
- 2.30.2 → 2.30.9 no changes
-
2.30.1
2021-02-08
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 no changes
-
2.27.0
2020-06-01
- 2.22.1 → 2.26.3 no changes
-
2.22.0
2019-06-07
- 2.18.1 → 2.21.4 no changes
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 no changes
-
2.16.6
2019-12-06
- 2.14.6 → 2.15.4 no changes
-
2.13.7
2018-05-22
- 2.12.5 no changes
-
2.11.4
2017-09-22
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.2.3 → 2.7.6 no changes
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
ОБЗОР
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] определяет формат шаблонов исключений.
Эти шаблоны исключения могут быть указаны в следующих местах (в порядке очерёдности):
-
Флаг командной строки --exclude=<шаблон> задаёт один шаблон. Шаблоны упорядочены в том же порядке, в котором они появляются в командной строке.
-
Флаг командной строки --exclude-from=<файл> указывает файл, содержащий список шаблонов. Шаблоны упорядочены в том же порядке, в котором они появляются в файле.
-
Флаг командной строки --exclude-per-directory=<имя> задаёт имя файла в каждом каталоге, который проверяет git ls-files, обычно
.gitignore. Файлы в более глубоких каталогах имеют приоритет. Шаблоны упорядочены в том же порядке, в котором они появляются в файлах.
Шаблон, указанный в командной строке с --exclude или прочитанный из файла, указанного с --exclude-from, является относительным относительно вершины дерева каталогов. Шаблон, прочитанный из файла, указанного с --exclude-per-directory, является относительным относительно каталога, в котором находится файл шаблонов.
Как правило, вы можете использовать --exclude-standard, когда хотите, чтобы правила исключения применялись так же, как это делают высокоуровневые команды. Чтобы эмулировать то, что задаёт --exclude-standard, вы можете указать --exclude-per-directory=.gitignore, а затем указать:
-
Файл, указанный переменной конфигурации
core.excludesfile, если существует, или файл$XDG_CONFIG_HOME/git/ignore. -
Файл
$GIT_DIR/info/exclude.
через параметр --exclude-from=.
GIT
Является частью пакета git[1]