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.)
Если вы определенный, который хотите игнорировать все измененные файлы, вы можете сделать это с помощью этой команды:
Но будьте осторожны. Помните, что возиться с --assume-unchanged может быть болью.
Рассмотрите возможность повторной работы, чтобы эти файлы вообще не нуждались в репо. Затем вы можете добавить их в свой .gitignore и удалить их из репозитория с помощью git rm --cached.
Если вы можете сохранить файлы как из репо, так и из рабочих каталогов пользователей, это может быть идеальным. Например, если файлы создаются как часть здания, вы можете создать статическую библиотеку вместо того, чтобы каждый разработчик выполнял процесс сборки локально.