Неможливо ігнорувати UserInterfaceState.xcuserstate


301

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

Відповіді:


669

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.


3
У мене є ця проблема, але коли я намагаюся видалити файл xcuserstate, він говорить, що "не відповідав жодним файлам". Що відбувається?
Роб Кервей

У мене така ж проблема, як у @RobCaraway
MaxGabriel

24
Це допомогло мені: 1) кинути xcode; 2) перейдіть до каталогу проектів і зробіть "ls -la" з термінальної програми, щоб переконатися, що ви бачите файли .git і .gitignore; 3) змінити "ProjectFolder" у наведеному вище прикладі на назву вашого проекту; 4) виконайте дві команди git, які показує matt; 5) Перезапустіть XCode і виконайте фіксацію та переконайтесь, що файл xcuserstate більше не вказаний.
Brainware

1
Будь-яка ідея, як зробити еквівалент у svn? Я отримую те саме питання, у якому svn не ігнорує файл
bpn

Дякую @Brainware !! Нарешті це спрацювало завдяки вашій пропозиції. Я думаю, що попередньо закрити Xcode дуже важливо.
Джей Верслуйс

52

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

1.

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

2.

git commit -m "Removed file that shouldn't be tracked"

3. ПОПЕРЕДЖЕННЯ спочатку спробуйте git clean -f -d --dry-run, інакше ви можете втратити невмілі зміни.

Тоді: git clean -f -d


github тепер надає вам файл .gitignore за замовчуванням, який включає цей файл серед інших, але ви все ще повинні пройти свої кроки. вид дратівливого
cspam

3
Спасибі чоловікам, git clean -f -d щойно видалений. xcodeproj та інші файли з мого проекту ...
Jeremy Luisetti

1
Настійно рекомендується використовувати прапор --dry перспективі перед запуском мерзотник чистої, тобто , git clean -f -d --dry-run щоб побачити , що відбувається
zero0cool

Що робить git clean -f -d?
allenlinli

Не використовуйте, git clean -f -dякщо у вас залишилися зміни файлів! Я використав це, і він видалив мої свіжо створені файли з уже створеним вмістом! :) Тож спочатку
покладіть,

44

Усі відповіді чудові, але ось такий, який буде видалено для кожного користувача, якщо він працює в різних Mac (домашніх і офісних)

git rm --cache */UserInterfaceState.xcuserstate
git commit -m "Never see you again, UserInterfaceState"

20

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


17

У випадку, якщо файл не відображається навіть після виконання всього зазначеного тут, переконайтесь, що цей прапорець у налаштуваннях Xcode не встановлений:

введіть тут опис зображення



7

Ось кілька демонстраційних та скорочень, якщо ви використовуєте GitHub, основні ідеї такі ж.

1. Відкрийте такий термінал

введіть тут опис зображення

2. Вставте команду нижче в термінал, після чого пробіл, а потім вставте шлях до файлу .xcuserstate просто так

git rm --cached введіть тут опис зображення

3. Переконайтеся, що ви правильно ігноруєте git, а потім введіть код :)

введіть тут опис зображення


4

Ось дуже приємне пояснення того, як рекурсивно видаляти файли з історії 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

Для мене дуже добре працювали :)



1

Це працює для мене

  1. Відкрийте папку, яка містить файл проекту project.xcworkspaceз терміналу.

  2. Напишіть цю команду: git rm --cached *xcuserstate

Це видалить файл.


0

Для xcode 8.3.3 я щойно перевірив спробувавший вище код і зауважую, що тепер у цьому випадку нам доведеться змінити команди, щоб це подобалось

спочатку ви можете створити .gitignore файл, використовуючи

 touch .gitignore

після цього ви можете видалити весь файл користувальницького інтерфейсу, скориставшись цією командою, і за допомогою цієї команди він поважатиме ваш файл .gitignore.

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

-1

Я думаю, було б краще писати так.

git rm --cache * / /UserInterfaceState.xcuserstate**

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.