Не могу игнорировать UserInterfaceState.xcuserstate - PullRequest
276 голосов
/ 03 июля 2011

Я использую Git для контроля версий проекта Xcode 4. Я явно добавил ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate к .gitignore, но Git не проигнорирует это. Есть идеи, почему это так?

Ответы [ 12 ]

613 голосов
/ 04 июля 2011

Git, вероятно, уже отслеживает файл.

Из документов gitignore :

Чтобы остановить отслеживание файла, который отслеживается в данный момент, используйте git rm --cached .

Используйте это, заменив [project] и [username] вашей информацией:

git rm --cached [project].xcodeproj/project.xcworkspace/xcuserdata/[username].xcuserdatad/UserInterfaceState.xcuserstate
git commit -m "Removed file that shouldn't be tracked"

В качестве альтернативы вы можете использовать -a опция git commit, которая добавит все файлы, которые были изменены или удалены.

Как только вы удалите файл из git, он будет уважать ваши .gitignore.

50 голосов
/ 03 марта 2014

В случае, если игнорируемый файл продолжал отображаться в списке без отслеживания, вы можете использовать git clean -f -d , чтобы очистить данные.

  1. git rm --cached YourProjectFolderName .xcodeproj / project.xcworkspace / xcuserdata / yourUserName .xcuserdatad / UserInterfaceState.xcuserstate

  2. git commit -m "Удаленный файл, который не должен отслеживаться"

  3. git clean -f-d

31 голосов
/ 14 сентября 2016

Все ответы великолепны, но вот тот, который удалит для каждого пользователя , если вы работаете в разных Mac (для дома и офиса)

git rm --cache */UserInterfaceState.xcuserstate
git commit -m "Never see you again, UserInterfaceState"
17 голосов
/ 24 марта 2015

Если бы друг показал мне этот удивительный сайт https://www.gitignore.io/. Введите IDE по вашему выбору или другим параметрам, и он автоматически сгенерирует файл gitignore, состоящий из полезных игнорирований, один из которых - xcuserstate. Вы можете просмотреть файл gitignore перед загрузкой.

15 голосов
/ 25 сентября 2015

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

enter image description here

12 голосов
/ 15 июля 2014

Только "git clean -f -d" работал на меня!

4 голосов
/ 16 августа 2011

Вот очень хорошее объяснение того, как рекурсивно удалять рассматриваемые файлы из вашей истории git: http://help.github.com/remove-sensitive-data/

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

Вот что вы можете сделать (вкратце), чтобы избавиться от самых больших вещей:

cd YourProject
git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r YourProject.xcodeproj/project.xcworkspace' HEAD
# see what you want to do with your remote here...
# you can: git push origin master --force
# or you can delete it and push a fresh new one from your cleaned-up local...
rm -rf .git/refs/original
git gc --prune=now
git gc --aggressive --prune=now

Работалочень приятно для меня:)

2 голосов
/ 05 июня 2018

У меня ничего не получалось, но это

добавить эту строку в ваш gitignore

*.xcuserdata
2 голосов
/ 11 октября 2017

Вот несколько демонстраций и кратких сокращений, если вы используете GitHub, основные идеи те же.

1. Откройте терминал, как это

enter image description here

2. Вставьте приведенную ниже команду в терминал, затем введите пробел, а затем вставьте путь к файлу .xcuserstate просто так

git rm --cached enter image description here

3. Убедитесь, что у вас есть правильный git ignore, а затем передайте код:)

enter image description here

1 голос
/ 02 октября 2018

Это работает для меня

  1. Откройте папку, содержащую файл проекта project.xcworkspace из терминала.

  2. Написать эту команду: git rm --cached *xcuserstate

Это удалит файл.

...