Состояние Git не обнаруживает изменений, но "git update-index --really-refresh" делает - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть 3 папки в моем проекте. 2 из них обнаруживают изменения с git status, а третий, Server/, не делает.

git update-index --no-assume-unchanged Server/ возвращает

Ignoring path Server/

Как ни странно,

git update-index --assume-unchanged Server/ также возвращает

Ignoring path Server/.

После состояния git изменения по-прежнему не отображаются. Тем не менее, запуск git update-index --really-refresh показывает их;как я могу заставить git status показывать их как обычно?

Спасибо!

1 Ответ

1 голос
/ 08 ноября 2019

Путь, который заканчивается на /, например Server/, никогда не может назвать файл в индексе. Такой путь называет каталог (или папку, если вы предпочитаете этот термин).

В отличие от многих пользовательских команд, git update-index является довольно простой сантехнической командой и не может работать со всеми файлами внутрикаталог, просто назвав каталог. Поэтому, если вы дадите ему имя каталога, даже несуществующего, он просто будет жаловаться, как указано выше:

$ git update-index --no-assume-unchanged abcdefg/
Ignoring path abcdefg/

, несмотря на полное отсутствие abcdefg/ файлов или даже abcdefgdirectory:

$ 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-скрипт , чтобы справиться с подобными вещами, частично как эксперимент, а частичнокогда я имел дело с плохой ситуацией, когда я часто устанавливал и очищал флаги. Общая ситуация теперь исправлена, но у меня все еще есть сценарий.)

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