Русский ▾ Topics ▾ Latest version ▾ git-status last updated in 2.53.0

НАЗВАНИЕ

git-status - показать состояние рабочего каталога

ОБЗОР

git status [<options>] [--] [<pathspec>…​]

ОПИСАНИЕ

Отображает пути, которые имеют различия между файлом индекса и текущим коммитом HEAD, пути, которые имеют различия между рабочим каталогом и файлом индекса, а также пути в рабочем каталоге, которые не отслеживаются Git (и не игнорируются gitignore[5]). Первые — это то, что вы закоммитили бы, выполнив git commit; вторые и третьи — это то, что вы могли бы закоммитить, выполнив git add перед выполнением git commit.

ПАРАМЕТРЫ

-s
--short

Выдавать вывод в кратком формате.

-b
--branch

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

--show-stash

Показывать количество записей, в настоящее время спрятанных.

--porcelain[=<version>]

Выдавать вывод в формате, удобном для анализа сценариями. Это похоже на краткий вывод, но останется стабильным во всех версиях Git и независимо от конфигурации пользователя. Подробности см. ниже.

Параметр <версия> используется для указания версии формата. Он необязателен и по умолчанию имеет исходный формат v1.

--long

Выдавать вывод в длинном формате. Это значение по умолчанию.

-v
--verbose

В дополнение к именам изменённых файлов также показывать текстовые изменения, которые проиндексированы для фиксации (т.е. как вывод git diff --cached). Если -v указан дважды, также показывать изменения в рабочем каталоге, которые ещё не проиндексированы (т.е. как вывод git diff).

-u[<режим>]
--untracked-files[=<режим>]

Отображать неотслеживаемые файлы.

Параметр режима используется для указания обработки неотслеживаемых файлов. Он необязателен: по умолчанию all, и если указан, он должен примыкать к параметру (например, -uno, но не -u no).

Возможные значения аргумента:

no

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

normal

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

all

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

Когда параметр -u не используется, показываются неотслеживаемые файлы и каталоги (т.е. то же самое, что указание normal), чтобы помочь вам не забыть добавить новые созданные файлы. Поскольку для поиска неотслеживаемых файлов в файловой системе требуется дополнительная работа, этот режим может занять некоторое время в большом рабочем каталоге. Рассмотрите возможность включения кэша неотслеживаемых файлов и разделённого индекса, если они поддерживаются (см. git update-index --untracked-cache и git update-index --split-index). В противном случае вы можете использовать no, чтобы git status возвращал результат быстрее, не показывая неотслеживаемые файлы. Все обычные варианты написания для булева значения true принимаются как normal, а false — как no.

По умолчанию можно изменить с помощью переменной конфигурации status.showUntrackedFiles, описанной в git-config[1].

--ignore-submodules[=<when>]

Iгнорировать изменения в подмодулях при поиске изменений. <когда> может быть none, untracked, dirty или all, что является значением по умолчанию.

none

будет считать подмодуль изменённым, когда он содержит неотслеживаемые или изменённые файлы, или его HEAD отличается от коммита, записанного в суперпроекте, и может использоваться для переопределения любых настроек параметра ignore в git-config[1] или gitmodules[5].

untracked

подмодули не считаются изменёнными, когда они содержат только неотслеживаемое содержимое (но они всё равно сканируются на предмет изменённого содержимого).

dirty

игнорировать все изменения в рабочем каталоге подмодулей, показываются только изменения в коммитах, хранящихся в суперпроекте (это было поведением до версии 1.7.0).

all

скрывать все изменения в подмодулях (и подавлять вывод сводок по подмодулям, когда установлен параметр конфигурации status.submoduleSummary).

--ignored[=<mode>]

Также показывать игнорируемые файлы.

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

Возможные значения аргумента:

traditional

Показывать игнорируемые файлы и каталоги, если только не указан --untracked-files=all, и в этом случае отображаются отдельные файлы в игнорируемых каталогах.

no

Не показывать игнорируемые файлы.

matching

Показать игнорируемые файлы и каталоги, соответствующие шаблону игнорирования.

Пути, которые явно соответствуют шаблону игнорирования, показываются. Если каталог соответствует шаблону игнорирования, то он показывается, но не пути, содержащиеся в игнорируемом каталоге. Если каталог не соответствует шаблону игнорирования, но всё его содержимое игнорируется, то каталог не показывается, но всё содержимое показывается.

-z

Завершать записи символом NUL вместо LF. Это подразумевает формат вывода --porcelain=v1, если не указан другой формат.

--column[=<параметры>]
--no-column

Отображать неотслеживаемые файлы в столбцах. См. конфигурационную переменную column.status для синтаксиса параметров. --column и --no-column без параметров эквивалентны always и never соответственно.

--ahead-behind
--no-ahead-behind

Отображать или не отображать подробные сведения о количестве опережений/отставаний для ветки относительно её вышестоящей ветки. По умолчанию true.

--renames
--no-renames

Включает/отключает обнаружение переименований независимо от конфигурации пользователя. См. также git-diff[1] --no-renames.

--find-renames[=<n>]

Включает обнаружение переименований, опционально устанавливая порог схожести. См. также git-diff[1] --find-renames.

<спецификатор-пути>…

См. запись pathspec в gitglossary[7].

ВЫВОД

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

Пути, упомянутые в выводе, в отличие от многих других команд Git, являются относительными относительно текущего каталога, если вы работаете в подкаталоге (это сделано намеренно, чтобы помочь копированию и вставке). См. параметр конфигурации status.relativePaths ниже.

Короткий формат

При использовании короткого формата статус каждого пути отображается в одном из следующих форм:

<xy> <путь>
<xy> <исходный-путь> -> <путь>

где <orig-path> — это место, откуда было переименовано/скопировано содержимое. <orig-path> отображается только в том случае, если запись была переименована или скопирована. <xy> — это двухбуквенный код состояния XY.

Поля (включая ->) отделяются друг от друга одним пробелом. Если имя файла содержит пробелы или другие непечатаемые символы, это поле будет заключено в кавычки в стиле строкового литерала C: окружено символами ASCII двойной кавычки (34), а внутренние специальные символы экранированы обратной косой чертой.

Существует три различных типа состояний, которые показываются с использованием этого формата, и каждый из них использует синтаксис <xy> по-разному:

  • Когда происходит слияние и оно было успешным, или вне слияния ситуации, X показывает статус индекса, а Y показывает статус рабочего каталога.

  • Когда возник конфликт слияния и он ещё не разрешён, X и Y показывают состояние, внесённое каждой головой слияния, относительно общего предка. Эти пути называются не слитыми.

  • Когда путь не отслеживается, X и Y всегда одинаковы, поскольку они неизвестны индексу. ?? используется для неотслеживаемых путей. Игнорируемые файлы не перечисляются, если не используется --ignored; если используется, игнорируемые файлы обозначаются !!.

Обратите внимание, что термин merge здесь также включает перемещения с использованием стратегии --merge по умолчанию, копирование коммитов и всё остальное, что использует механизм слияния.

В следующей таблице эти три класса показаны в отдельных разделах, и эти символы используются для полей X и Y в первых двух разделах, показывающих отслеживаемые пути:

' '

неизменено

M

изменено

T

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

A

добавлен

D

удалено

R

переименовано

C

скопирован (если параметр конфигурации status.renames установлен в «copies»)

U

обновлён, но не слит

X Y Значение

[AMD]

не обновлено

M

[ MTD]

обновлён в индексе

T

[ MTD]

тип изменён в индексе

A

[ MTD]

добавлен в индекс

D

удалён из индекса

R

[ MTD]

переименовано в индексе

C

[ MTD]

скопирован в индексе

[MTARC]

индекс и рабочий каталог совпадают

[ MTARC]

M

рабочий каталог изменён с момента индекса

[ MTARC]

T

тип изменён в рабочем каталоге с момента индекса

[ MTARC]

D

удалён в рабочем каталоге

R

переименован в рабочем каталоге

C

скопирован в рабочем каталоге

D

D

не слит, оба удалены

A

U

не слит, добавлено нами

U

D

не слит, удалено ими

U

A

не слит, добавлено ими

D

U

не слит, удалено нами

A

A

не слито, оба добавлены

U

U

не слито, оба изменены

?

?

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

!

!

игнорируемый

Подмодули имеют больше состояний и вместо этого сообщают

M

подмодуль имеет HEAD, отличный от записанного в индексе

m

подмодуль изменил содержимое

?

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

Это связано с тем, что изменённое содержимое или неотслеживаемые файлы в подмодуле не могут быть добавлены через git add в суперпроекте для подготовки коммита.

m и ? применяются рекурсивно. Например, если вложенный подмодуль в подмодуле содержит неотслеживаемый файл, это также сообщается как ?.

Если используется -b, краткому формату статуса предшествует строка

{empty}## <имя-ветки> <информация-об-отслеживании>

Формат Porcelain версии 1

Формат Porcelain версии 1 похож на краткий формат, но гарантированно не изменяется несовместимым образом между версиями Git или в зависимости от конфигурации пользователя. Это делает его идеальным для анализа сценариями. Описание краткого формата выше также описывает Porcelain формат, за исключением нескольких моментов:

  1. Конфигурация color.status пользователя не учитывается; цвет всегда будет выключен.

  2. Конфигурация status.relativePaths пользователя не учитывается; показанные пути всегда будут относительными корня репозитория.

Существует также альтернативный формат -z, рекомендуемый для машинного анализа. В этом формате поле статуса остаётся тем же, но некоторые другие вещи меняются. Во-первых, -> опускается из записей переименования, и порядок полей меняется на обратный (например, from -> to становится to from). Во-вторых, после каждого имени файла следует NUL (ASCII 0), заменяющий пробел в качестве разделителя полей и завершающий символ новой строки (но пробел по-прежнему отделяет поле статуса от первого имени файла). В-третьих, имена файлов, содержащие специальные символы, не форматируются специальным образом; не выполняется никаких кавычек или экранирования обратной косой чертой.

Любые изменения в подмодулях сообщаются как изменённые M вместо m или одиночного ?.

Формат Porcelain версии 2

Формат версии 2 добавляет более подробную информацию о состоянии рабочего каталога и изменённых элементах. Версия 2 также определяет расширяемый набор легко анализируемых необязательных заголовков.

Строки заголовков начинаются с # и добавляются в ответ на определённые аргументы командной строки. Анализаторы должны игнорировать заголовки, которые они не распознают.

Заголовки веток

Если указан --branch, выводится серия строк заголовков с информацией о текущей ветке.

Строка Заметки

# branch.oid <коммит> | (начальный)

Текущий коммит.

# branch.head <ветка> | (отсоединённый)