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.53.0 → 2.54.0 no changes
-
2.52.0
2025-11-17
- 2.45.4 → 2.51.2 no changes
-
2.45.3
2024-11-26
- 2.43.1 → 2.45.2 no changes
-
2.43.0
2023-11-20
- 2.38.1 → 2.42.4 no changes
-
2.38.0
2022-10-02
- 2.36.1 → 2.37.7 no changes
-
2.36.0
2022-04-18
- 2.30.2 → 2.35.8 no changes
-
2.30.1
2021-02-08
- 2.25.2 → 2.30.0 no changes
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.19.1 → 2.24.4 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 no changes
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
- 2.10.5 → 2.12.5 no changes
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 no changes
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
- 2.4.12 no changes
-
2.3.10
2015-09-28
-
2.2.3
2015-09-04
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
ОБЗОР
git update-index
[--add] [--remove | --force-remove] [--replace]
[--refresh] [-q] [--unmerged] [--ignore-missing]
[(--cacheinfo <режим>,<объект>,<файл>)…]
[--chmod=(+|-)x]
[--[no-]assume-unchanged]
[--[no-]skip-worktree]
[--[no-]ignore-skip-worktree-entries]
[--[no-]fsmonitor-valid]
[--ignore-submodules]
[--[no-]split-index]
[--[no-|test-|force-]untracked-cache]
[--[no-]fsmonitor]
[--really-refresh] [--unresolve] [--again | -g]
[--info-only] [--index-info]
[-z] [--stdin] [--index-version <число>]
[--show-index-version]
[--verbose]
[--] [<файл>…]
ОПИСАНИЕ
Изменяет индекс. Каждый упомянутый файл обновляется в индексе, и любое состояние не слит или требует обновления сбрасывается.
См. также git-add[1] для более удобного способа выполнения некоторых наиболее распространённых операций с индексом.
То, как git update-index обрабатывает указанные ему файлы, можно изменить с помощью различных параметров:
ПАРАМЕТРЫ
- --add
-
Если указанный файл ещё не находится в индексе, он добавляется. Поведение по умолчанию — игнорировать новые файлы.
- --remove
-
Если указанный файл находится в индексе, но отсутствует, он удаляется. Поведение по умолчанию — игнорировать удалённые файлы.
- --refresh
-
Просматривает текущий индекс и проверяет, необходимы ли слияния или обновления, путём проверки информации stat().
- -q
-
Тихий режим. Если --refresh обнаруживает, что индекс требует обновления, поведение по умолчанию — завершение ошибкой. Этот параметр заставляет git update-index продолжить работу в любом случае.
- --ignore-submodules
-
Не пытаться обновлять подмодули. Этот параметр учитывается только при передаче перед --refresh.
- --unmerged
-
Если --refresh обнаруживает не слитые изменения в индексе, поведение по умолчанию — завершение ошибкой. Этот параметр заставляет git update-index продолжить работу в любом случае.
- --ignore-missing
-
Игнорирует отсутствующие файлы во время --refresh
- --cacheinfo <режим>,<объект>,<путь>
- --cacheinfo <режим> <объект> <путь>
-
Непосредственно вставляет указанную информацию в индекс. Для обратной совместимости вы также можете передать эти три аргумента как три отдельных параметра, но новым пользователям рекомендуется использовать форму с одним параметром.
- --index-info
-
Читать информацию индекса из stdin.
- --chmod=(+|-)x
-
Установить права на выполнение для обновлённых файлов.
- --assume-unchanged
- --no-assume-unchanged
-
Когда указан этот флаг, имена объектов, записанные для путей, не обновляются. Вместо этого этот параметр устанавливает/сбрасывает бит "assume unchanged" для путей. Когда бит "assume unchanged" установлен, пользователь обещает не изменять файл и позволяет Git предполагать, что файл рабочего каталога соответствует тому, что записано в индексе. Если вы хотите изменить файл рабочего каталога, вам нужно сбросить бит, чтобы сообщить об этом Git. Это иногда полезно при работе с большим проектом в файловой системе, которая имеет очень медленный системный вызов lstat(2) (например, cifs).
Git завершится ошибкой (корректно), если ему потребуется изменить этот файл в индексе, например, при слиянии коммита; таким образом, если предполагаемый неотслеживаемый файл изменён вышестоящей веткой, вам нужно будет обработать ситуацию вручную.
- --really-refresh
-
Как
--refresh, но проверяет информацию stat безусловно, независимо от настройки "assume unchanged". - --skip-worktree
- --no-skip-worktree
-
Когда указан один из этих флагов, имена объектов, записанные для путей, не обновляются. Вместо этого эти параметры устанавливают и сбрасывают бит "skip-worktree" для путей. Дополнительную информацию см. в разделе "Бит skip-worktree" ниже.
- --ignore-skip-worktree-entries
- --no-ignore-skip-worktree-entries
-
Не удалять записи skip-worktree (также известные как "только индекс"), даже когда был указан параметр
--remove. - --fsmonitor-valid
- --no-fsmonitor-valid
-
Когда указан один из этих флагов, имена объектов, записанные для путей, не обновляются. Вместо этого эти параметры устанавливают и сбрасывают бит «fsmonitor valid» для путей. Дополнительную информацию см. в разделе «Монитор файловой системы» ниже.
- -g
- --again
-
Запускает git update-index на путях, чьи записи индекса отличаются от записей коммита
HEAD. - --unresolve
-
Восстанавливает состояние не слит или требует обновления файла во время слияния, если оно было случайно сброшено.
- --info-only
-
Не создавать объекты в базе данных объектов для всех аргументов <файл>, следующих за этим флагом; просто вставить их идентификаторы объектов в индекс.
- --force-remove
-
Удалить файл из индекса, даже если в рабочем каталоге всё ещё есть такой файл. (Подразумевает --remove.)
- --replace
-
По умолчанию, когда в индексе существует файл путь, git update-index отказывается от попытки добавить путь/файл. Аналогично, если существует файл путь/файл, файл путь не может быть добавлен. С флагом --replace существующие записи, конфликтующие с добавляемой записью, автоматически удаляются с предупреждающими сообщениями.
- --stdin
-
Вместо получения списка путей из командной строки читает список путей из стандартного ввода. По умолчанию пути разделяются LF (т.е. один путь на строку).
- --verbose
-
Сообщать, что добавляется и удаляется из индекса.
- --index-version <n>
-
Записывает результирующий индекс в указанной версии формата на диске. Поддерживаются версии 2, 3 и 4. Текущая версия по умолчанию — 2 или 3, в зависимости от того, используются ли дополнительные функции, такие как
gitadd-N. С--verboseтакже сообщает версию, которую файл индекса использует до и после этой команды.Версия 4 выполняет простую компрессию имён путей, которая уменьшает размер индекса на 30–50% в больших репозиториях, что приводит к более быстрой загрузке. Git поддерживает её с версии 1.8.0, выпущенной в октябре 2012 года, а поддержка её была добавлена в libgit2 в 2016 году и в JGit в 2020 году. В старых версиях этой страницы руководства она называлась "относительно новой", но в наши дни её следует считать зрелой технологией.
- --show-index-version
-
Сообщает версию формата индекса, используемую файлом индекса на диске. См.
--index-versionвыше. - -z
-
Имеет смысл только с
--stdinили--index-info; пути разделяются символом NUL вместо LF. - --split-index
- --no-split-index
-
Включает или отключает режим разделённого индекса. Если режим разделённого индекса уже включён и
--split-indexуказан снова, все изменения в $GIT_DIR/index отправляются обратно в файл общего индекса.Эти параметры вступают в силу независимо от значения переменной конфигурации
core.splitIndex(см. git-config[1]). Но выводится предупреждение, когда изменение противоречит настроенному значению, поскольку настроенное значение вступит в силу при следующем чтении индекса, и это удалит предполагаемый эффект параметра. - --untracked-cache
- --no-untracked-cache
-
Включает или отключает функцию кэша неотслеживаемых файлов. Пожалуйста, используйте
--test-untracked-cacheперед её включением.Эти параметры вступают в силу независимо от значения переменной конфигурации
core.untrackedCache(см. git-config[1]). Но выводится предупреждение, когда изменение противоречит настроенному значению, поскольку настроенное значение вступит в силу при следующем чтении индекса, и это удалит предполагаемый эффект параметра. - --test-untracked-cache
-
Только выполнять тесты в рабочем каталоге, чтобы убедиться, что кэш неотслеживаемых файлов может использоваться. Если вы действительно хотите использовать его, вы должны вручную включить кэш неотслеживаемых файлов с помощью
--untracked-cache,--force-untracked-cacheили переменной конфигурацииcore.untrackedCacheпозже. Если тест не удаётся, код выхода равен 1, и сообщение объясняет, что работает не так, как нужно; в противном случае код выхода равен 0, и выводится OK. - --force-untracked-cache
-
То же, что и
--untracked-cache. Предоставлено для обратной совместимости со старыми версиями Git, где--untracked-cacheподразумевал--test-untracked-cache, но этот параметр безусловно включал расширение. - --fsmonitor
- --no-fsmonitor
-
Включает или отключает функцию монитора файловой системы. Эти параметры вступают в силу независимо от значения переменной конфигурации
core.fsmonitor(см. git-config[1]). Но выводится предупреждение, когда изменение противоречит настроенному значению, поскольку настроенное значение вступит в силу при следующем чтении индекса, и это удалит предполагаемый эффект параметра. - --
-
Не рассматривать остальные аргументы командной строки в качестве параметров.
- <file>
-
Файлы для действия. Обратите внимание, что файлы, начинающиеся с ., отбрасываются. Это включает ./файл и каталог/./файл. Если вы не хотите этого, используйте более чистые имена. То же самое относится к каталогам, заканчивающимся на /, и путям с //
ИСПОЛЬЗОВАНИЕ --REFRESH
--refresh не вычисляет новый файл sha1 и не обновляет индекс для изменений режима/содержимого. Но что он делает, так это "повторно сопоставляет" информацию stat файла с индексом, чтобы вы могли обновить индекс для файла, который не был изменён, но запись stat которого устарела.
Например, вы захотите сделать это после выполнения git read-tree, чтобы связать детали stat индекса с соответствующими файлами.
ИСПОЛЬЗОВАНИЕ --CACHEINFO ИЛИ --INFO-ONLY
--cacheinfo используется для регистрации файла, которого нет в текущем рабочем каталоге. Это полезно для слияния с минимальным переключением.
Чтобы сделать вид, что у вас есть файл по пути с режимом и sha1, выполните:
$ git update-index --add --cacheinfo <режим>,<sha1>,<путь>
--info-only используется для регистрации файлов без помещения их в базу данных объектов. Это полезно для репозиториев, предназначенных только для статуса.
Оба параметра --cacheinfo и --info-only ведут себя одинаково: индекс обновляется, а база данных объектов — нет. --cacheinfo полезен, когда объект находится в базе данных, но файл недоступен локально. --info-only полезен, когда файл доступен, но вы не хотите обновлять базу данных объектов.
ИСПОЛЬЗОВАНИЕ --INDEX-INFO
--index-info — это более мощный механизм, который позволяет передавать несколько определений записей из стандартного ввода и предназначен специально для сценариев. Он может принимать входные данные в трёх форматах:
-
режим SP тип SP sha1 TAB путь
Этот формат предназначен для помещения вывода
gitls-treeв индекс. -
режим SP sha1 SP стадия TAB путь
Этот формат предназначен для помещения записей более высоких стадий в файл индекса и соответствует выводу git ls-files --stage.
-
режим SP sha1 TAB путь
Этот формат больше не создаётся ни одной командой Git, но поддерживается и будет продолжать поддерживаться командой
update-index--index-info.
Чтобы поместить запись более высокой стадии в индекс, путь должен быть сначала удалён путём подачи записи с mode=0 для этого пути, а затем подачи необходимых входных строк в третьем формате.
Например, начиная с этого индекса:
$ git ls-files -s 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 0 frotz
вы можете передать следующий ввод в --index-info:
$ git update-index --index-info 0 0000000000000000000000000000000000000000 frotz 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz 100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
Первая строка ввода подаёт 0 в качестве режима для удаления пути; SHA-1 не имеет значения, если он правильно отформатирован. Затем вторая и третья строки подают записи стадии 1 и стадии 2 для этого пути. После вышеуказанного мы получим это:
$ git ls-files -s 100644 8a1218a1024a212bb3db30becd860315f9f3ac52 1 frotz 100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2 frotz
ИСПОЛЬЗОВАНИЕ БИТА “ASSUME UNCHANGED”
Многие операции в Git зависят от того, чтобы ваша файловая система имела эффективную реализацию lstat(2), чтобы информацию st_mtime для файлов рабочего каталога можно было недорого проверить, изменилось ли содержимое файла по сравнению с версией, записанной в файле индекса. К сожалению, некоторые файловые системы имеют неэффективный lstat(2). Если ваша файловая система — одна из них, вы можете установить бит «assume unchanged» для путей, которые вы не изменяли, чтобы Git не выполнял эту проверку. Обратите внимание, что установка этого бита на путь не означает, что Git будет проверять содержимое файла, чтобы увидеть, изменилось ли оно, — это заставляет Git пропускать любую проверку и предполагать, что он не изменился. Когда вы вносите изменения в файлы рабочего каталога, вы должны явно сообщить об этом Git, сбросив бит «assume unchanged», либо до, либо после их изменения.
Чтобы установить бит "assume unchanged", используйте параметр --assume-unchanged. Чтобы сбросить, используйте --no-assume-unchanged. Чтобы увидеть, для каких файлов установлен бит "assume unchanged", используйте git ls-files -v (см. git-ls-files[1]).
Команда обращает внимание на переменную конфигурации core.ignorestat. Когда это истинно, пути, обновлённые с помощью git update-index пути..., и пути, обновлённые с помощью других команд Git, которые обновляют и индекс, и рабочий каталог (например, git apply --index, git checkout-index -u и git read-tree -u), автоматически помечаются как "assume unchanged". Обратите внимание, что бит "assume unchanged" не устанавливается, если git update-index --refresh обнаруживает, что файл рабочего каталога соответствует индексу (используйте git update-index --really-refresh, если вы хотите пометить их как "assume unchanged").
Иногда пользователи путают бит assume-unchanged с битом skip-worktree. См. последний абзац в разделе "Бит skip-worktree" ниже для объяснения различий.
ПРИМЕРЫ
Чтобы обновить и осветить только уже переключённые файлы:
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
- В неэффективной файловой системе с установленным
core.ignorestat -
$ git update-index --really-refresh (1) $ git update-index --no-assume-unchanged foo.c (2) $ git diff --name-only (3) $ edit foo.c $ git diff --name-only (4) M foo.c $ git update-index foo.c (5) $ git diff --name-only (6) $ edit foo.c $ git diff --name-only (7) $ git update-index --no-assume-unchanged foo.c (8) $ git diff --name-only (9) M foo.c
-
заставляет lstat(2) установить биты "assume unchanged" для путей, соответствующих индексу.
-
отметить путь для редактирования.
-
это вызывает lstat(2) и обнаруживает, что индекс соответствует пути.
-
это вызывает lstat(2) и обнаруживает, что индекс не соответствует пути.
-
регистрация новой версии в индексе устанавливает бит "предполагать неизменным".
-
и он считается неизменным.
-
даже после того, как вы его отредактировали.
-
вы можете сообщить об изменении после факта.
-
теперь он проверяет с помощью lstat(2) и обнаруживает, что он был изменён.
-
БИТ SKIP-WORKTREE
Бит skip-worktree можно определить одним (длинным) предложением: Указать git избегать записи файла в рабочий каталог, когда это разумно возможно, и считать файл неизменным, когда он отсутствует в рабочем каталоге.
Обратите внимание, что не все команды git будут обращать внимание на этот бит, и некоторые поддерживают его лишь частично.
Флаги update-index и возможности read-tree, связанные с битом skip-worktree, появились до введения команды git-sparse-checkout[1], которая предоставляет гораздо более простой способ настройки и обработки битов skip-worktree. Если вы хотите сократить ваш рабочий каталог, чтобы работать только с подмножеством файлов в репозитории, мы настоятельно рекомендуем использовать git-sparse-checkout[1] вместо низкоуровневых примитивов update-index и read-tree.
Основная цель бита skip-worktree — включение частичных переключений, т.е. наличие рабочих каталогов, в которых присутствует только подмножество путей. Когда бит skip-worktree установлен, команды Git (такие как switch, pull, merge) будут избегать записи этих файлов. Однако эти команды иногда всё же будут записывать эти файлы в важных случаях, таких как конфликты во время слияния или перемещения. Команды Git также будут избегать обработки отсутствия таких файлов как преднамеренного удаления; например, git add -u не будет индексировать удаление этих файлов, и git commit -a также не создаст коммит, удаляющий их.
Хотя этот бит похож на бит assume-unchanged, его цель отличается. Бит assume-unchanged предназначен для того, чтобы оставить файл в рабочем каталоге, но заставить Git пропустить проверку его изменений и предполагать, что файл не был изменён (хотя если он может определить без вызова stat, что файл изменился, он может записать изменения). skip-worktree указывает Git игнорировать отсутствие файла, избегать его обновления, когда это возможно, с помощью команд, которые обычно обновляют большую часть рабочего каталога (например, checkout, switch, pull и т.д.), и не записывать его отсутствие в коммиты. Обратите внимание, что в частичных переключениях (настроенных с помощью git sparse-checkout или установкой core.sparseCheckout в true), если файл помечен как skip-worktree в индексе, но найден в рабочем каталоге, Git очистит бит skip-worktree для этого файла.
РАЗДЕЛЁННЫЙ ИНДЕКС
Этот режим предназначен для репозиториев с очень большими индексами и направлен на сокращение времени, необходимого для многократной записи этих индексов.
В этом режиме индекс разделяется на два файла: $GIT_DIR/index и $GIT_DIR/sharedindex.<SHA-1>. Изменения накапливаются в $GIT_DIR/index, разделённом индексе, в то время как файл общего индекса содержит все записи индекса и остаётся неизменным.
Все изменения в разделённом индексе отправляются обратно в файл общего индекса, когда количество записей в разделённом индексе достигает уровня, указанного переменной конфигурации splitIndex.maxPercentChange (см. git-config[1]).
Каждый раз при создании нового файла общего индекса старые файлы общего индекса удаляются, если время их изменения старше, чем указано переменной конфигурации splitIndex.sharedIndexExpire (см. git-config[1]).
Чтобы избежать удаления файла общего индекса, который всё ещё используется, его время изменения обновляется до текущего времени каждый раз, когда новый разделённый индекс на основе файла общего индекса создаётся или читается.
КЭШ НЕОТСЛЕЖИВАЕМЫХ ФАЙЛОВ
Этот кэш предназначен для ускорения команд, связанных с определением неотслеживаемых файлов, таких как git status.
Эта функция работает путём записи mtime каталогов рабочего каталога, а затем пропуска чтения каталогов и вызовов stat для файлов в тех каталогах, чьё mtime не изменилось. Чтобы это работало, базовая операционная система и файловая система должны изменять поле st_mtime каталогов, если файлы в каталоге добавляются, изменяются или удаляются.
Вы можете проверить, поддерживает ли файловая система это, с помощью параметра --test-untracked-cache. Параметр --untracked-cache в старых версиях Git неявно выполнял эту проверку, но теперь это не так.
Если вы хотите включить (или отключить) эту функцию, проще использовать переменную конфигурации core.untrackedCache (см. git-config[1]), чем использовать параметр --untracked-cache для git update-index в каждом репозитории, особенно если вы хотите сделать это для всех используемых вами репозиториев, потому что вы можете установить переменную конфигурации в true (или false) в вашем $HOME/.gitconfig всего один раз, и это повлияет на все репозитории, с которыми вы работаете.
Когда переменная конфигурации core.untrackedCache изменяется, кэш неотслеживаемых файлов добавляется в индекс или удаляется из него при следующем чтении индекса командой; в то время как при использовании --[no-|force-]untracked-cache кэш неотслеживаемых файлов немедленно добавляется в индекс или удаляется из него.
До версии 2.17 в кэше неотслеживаемых файлов была ошибка, когда замена каталога символьной ссылкой на другой каталог могла привести к некорректному отображению файлов, отслеживаемых git, как неотслеживаемых. См. коммит "status: add a failing test showing a core.untrackedCache bug" в git.git. Обходной путь (и это может сработать для других необнаруженных ошибок в будущем):
$ git -c core.untrackedCache=false status
Было также показано, что эта ошибка влияет на случаи, не связанные с символьными ссылками, когда каталог заменяется файлом, что касается внутренних структур кэша неотслеживаемых файлов, но не было сообщений о случаях, когда это приводило к неверному выводу "git status".
Также бывают случаи, когда существующие индексы, записанные версиями git до 2.17, ссылаются на каталоги, которых больше не существует, что может привести к выводу множества предупреждений "could not open directory" при выполнении "git status". Это новые предупреждения для существующих проблем, которые ранее молча игнорировались.
Как и в случае с ошибкой, описанной выше, решение состоит в том, чтобы однократно выполнить "git status" с core.untrackedCache=false, чтобы очистить оставшиеся повреждённые данные.
МОНИТОР ФАЙЛОВОЙ СИСТЕМЫ
Эта функция предназначена для ускорения операций git для репозиториев с большими рабочими каталогами.
Она позволяет git работать совместно с монитором файловой системы (см. git-fsmonitor--daemon[1] и раздел "fsmonitor-watchman" в githooks[5]), который может сообщать ему, какие файлы были изменены. Это позволяет git избегать необходимости выполнять lstat() для каждого файла, чтобы найти изменённые файлы.
При использовании совместно с кэшем неотслеживаемых файлов это может ещё больше улучшить производительность, избегая затрат на сканирование всего рабочего каталога в поисках новых файлов.
Если вы хотите включить (или отключить) эту функцию, проще использовать переменную конфигурации core.fsmonitor (см. git-config[1]), чем использовать параметр --fsmonitor для git update-index в каждом репозитории, особенно если вы хотите сделать это для всех используемых вами репозиториев, потому что вы можете установить переменную конфигурации в вашем $HOME/.gitconfig всего один раз, и это повлияет на все репозитории, с которыми вы работаете.
Когда переменная конфигурации core.fsmonitor изменяется, монитор файловой системы добавляется в индекс или удаляется из него при следующем чтении индекса командой. При использовании --[no-]fsmonitor монитор файловой системы немедленно добавляется в индекс или удаляется из него.
КОНФИГУРАЦИЯ
Команда учитывает переменную конфигурации core.filemode. Если ваш репозиторий находится в файловой системе, чьи биты выполнения ненадёжны, это должно быть установлено в false (см. git-config[1]). Это заставляет команду игнорировать различия в режимах файлов, записанных в индексе, и режиме файла в файловой системе, если они различаются только по биту выполнения. В такой неудачной файловой системе вам может потребоваться использовать git update-index --chmod=.
Совершенно аналогично, если переменная конфигурации core.symlinks установлена в false (см. git-config[1]), символьные ссылки переключаются как обычные файлы, и эта команда не изменяет записанный режим файла с символьной ссылки на обычный файл.
Команда обращает внимание на переменную конфигурации core.ignorestat. См. раздел Использование бита "предполагать неизменным" выше.
Команда также обращает внимание на переменную конфигурации core.trustctime. Она может быть полезна, когда время изменения инода регулярно изменяется чем-то вне Git (обходчики файловой системы и системы резервного копирования используют ctime для отметки обработанных файлов) (см. git-config[1]).
Расширение кэша неотслеживаемых файлов может быть включено переменной конфигурации core.untrackedCache (см. git-config[1]).
ЗАМЕТКИ
Пользователи часто пытаются использовать биты assume-unchanged и skip-worktree, чтобы указать Git игнорировать изменения в отслеживаемых файлах. Это работает не так, как ожидается, поскольку Git всё равно может проверять файлы рабочего каталога с индексом при выполнении определённых операций. В общем, Git не предоставляет способа игнорировать изменения в отслеживаемых файлах, поэтому рекомендуются альтернативные решения.
Например, если файл, который вы хотите изменить, является каким-то конфигурационным файлом, репозиторий может включать образец конфигурационного файла, который затем можно скопировать в игнорируемое имя и изменить. Репозиторий может даже включать сценарий для обработки образца файла как шаблона, автоматически изменяя и копируя его.
GIT
Является частью пакета git[1]