Git update-index -assume-unchanged возвращает ошибку

git update-index --assume-unchanged <filename> возвращает fatal: Unable to mark file <filename>.

Что мне нужно сделать, чтобы исправить это? Что он жалуется и почему?

Ответ 1

Добавлен ли он в репозиторий, а не в .git/info/exclude, а не на .gitignore?

Если ответ да для любого из них, то файл не находится в репозитории, и это является причиной ошибки.

Попробуйте git ls-files -o и посмотрите, есть ли файл. Это не должно быть.

Ответ 2

Вы используете git update-index --assume-unchanged, потому что у вас есть файлы, которые отмечены в репозитории, но вы хотите игнорировать локальные изменения.

Как отмечает Педро, файл, который дает вам ошибку, не проверяется в репозитории. (Он отображается в git ls-files -o, что означает, что он не отслеживается.)

Это может произойти из-за того, что вы пытаетесь игнорировать весь каталог с рекурсивно так:

find ./folder/ -type f | xargs git update-index --assume-unchanged

Но не только файлы в этой папке изменены, но и новые файлы. (например, с помощью сборки script.)

Если вы определенный, который хотите игнорировать все измененные файлы, вы можете сделать это с помощью этой команды:

git ls-files -m | xargs git update-index --assume-unchanged

Но будьте осторожны. Помните, что возиться с --assume-unchanged может быть болью.

Рассмотрите возможность повторной работы, чтобы эти файлы вообще не нуждались в репо. Затем вы можете добавить их в свой .gitignore и удалить их из репозитория с помощью git rm --cached.

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