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