Путь, который заканчивается на /
, например Server/
, никогда не может назвать файл в индексе. Такой путь называет каталог (или папку, если вы предпочитаете этот термин).
В отличие от многих пользовательских команд, git update-index
является довольно простой сантехнической командой и не может работать со всеми файлами внутрикаталог, просто назвав каталог. Поэтому, если вы дадите ему имя каталога, даже несуществующего, он просто будет жаловаться, как указано выше:
$ git update-index --no-assume-unchanged abcdefg/
Ignoring path abcdefg/
, несмотря на полное отсутствие abcdefg/
файлов или даже abcdefg
directory:
$ file abcdefg/
abcdefg/: cannot open `abcdefg/' (No such file or directory)
Если у вас есть файлы в Server/
и вы хотите установить эти флаги индекса для записей для этих файлов, которые в настоящее время существуют в индексе, вы должны назвать каждый такой файл по отдельности:
$ git ls-files --stage builtin/
100644 dd18e5c9b67038307401e8d33970d5c424c03cb7 0 builtin/add.c
100644 761cac39e02a7f45dd7f95f05d31e0ad373be214 0 builtin/am.c
100644 da413ae0d178b53d6b1e6c193577c23923255245 0 builtin/annotate.c
100644 3f099b960565ff2944209ba514ea7274dad852f5 0 builtin/apply.c
[many more lines, snipped]
Чтобы установить или снять флаг предположения неизменности на каждой из этих записей индекса, вам (или мне) придется вызывать git update-index
один раз для каждого такого файла. Есть 112 таких файлов, поэтому требуется 112 вызовов на git update-index
.
(использование git update-index
напрямую - это почти всегда признак того, что вы делаете что-то не так. Если вы установили много, предположите, чтоНеизменные флаги, вероятно, это была настоящая ошибка, вам придется сбросить их все по отдельности, чтобы исправить это. Я написал свой собственный Python-скрипт , чтобы справиться с подобными вещами, частично как эксперимент, а частичнокогда я имел дело с плохой ситуацией, когда я часто устанавливал и очищал флаги. Общая ситуация теперь исправлена, но у меня все еще есть сценарий.)