Удаление файлов .xcuserstate и DS_Store из git
В Xcode я заметил, что .DS_Store и * .xcuserstate всегда меняются и не нуждаются в совершении. Итак, я написал файл .gitignore, который содержит следующее:
.DS_Store *.xcuserstate
среди других записей. Затем я использовал:
git rm --cached *xcuserstate git rm ---cached .DS_Store
Чтобы удалить эти типы файлов уже под управлением версии. Однако, когда я иду на слияние, Xcode сообщает мне, что есть изменения, которые необходимо выполнить. Эти изменения включают файлы .DS_Store и файлы .xcuserstate.
Итак, я пробовал это: Как я могу удалить файлы .DS_Store из хранилища Git?
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch find . -name *.xcuserstate -print0 | xargs -0 git rm --ignore-unmatch
и я получил тот же результат. Как удалить эти файлы из исходного элемента управления навсегда?
Вам необходимо зафиксировать изменения после их удаления из промежуточной области.
Как вы уже делали, запустите:
$ git rm --cached path/to/.DS_Store $ git rm --cached *.xcuserstate
Обратите внимание: у вас могут быть некоторые в других каталогах, поэтому вам может понадобиться несколько вызовов, чтобы получить их все. На этом этапе ваши удаления помещаются в индекс, но еще многое предстоит сделать: добавьте свой .gitignore
и зафиксируйте конечный результат:
$ git add .gitignore $ git commit -m "Remove and ignore .xcuserstate and .DS_Store files."
Теперь они будут удалены из хранилища и будут игнорироваться в будущем. Примечание. Это приведет к удалению файлов для других людей, даже если вы использовали git rm --cached
локально. К сожалению, вы не можете сделать этого. Кроме того, файлы все еще находятся в вашей истории, поэтому в зависимости от того, что вы делаете, вы можете видеть их в других ветвях, пока все не будет объединено, а все ваши ветви основаны на том, что имеет новый фиксатор.
Попробуйте git update-index --assume-unchanged *.xcuserstate .DS_Store
и посмотрите, помогает ли он