Удаление файлов .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 и посмотрите, помогает ли он

Давайте будем гением компьютера.