Не могу игнорировать UserInterfaceState.xcuserstate

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


person GarlicFries    schedule 03.07.2011    source источник


Ответы (13)


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.

person matt    schedule 03.07.2011
comment
У меня есть эта проблема, но когда я пытаюсь удалить файл xcuserstate, он говорит «не соответствует ни одному файлу». Что происходит? - person Rob Caraway; 07.11.2012
comment
У меня та же проблема, что и у @RobCaraway. - person MaxGabriel; 20.06.2013
comment
Мне помогло: 1) выйти из xcode; 2) перейдите в каталог проекта и выполните ls -la из приложения терминала, чтобы убедиться, что вы видите файлы .git и .gitignore; 3) изменить ProjectFolder в приведенном выше примере на имя вашего проекта; 4) выполните две команды git, которые показывает Мэтт; 5) Перезапустите XCode, выполните фиксацию и убедитесь, что файл xcuserstate больше не указан. - person Brainware; 15.08.2013
comment
Любая идея, как сделать эквивалент в svn? Я получаю ту же проблему, в которой svn не игнорирует файл - person bpn; 04.03.2014
comment
Спасибо @Brainware!! Наконец-то это сработало благодаря вашему предложению. Я думаю, что закрытие Xcode заранее очень важно. - person Jay Versluis; 14.04.2014
comment
@matt только что прошел эти шаги, но все еще имеет ту же проблему ... также безуспешно пробовал опцию commit -a. Какие-либо предложения? - person trdavidson; 26.07.2015
comment
Можно ли сделать переменные [username] на базе машины? Будет полезно при работе в команде! - person MEnnabah; 18.08.2018
comment
Пожалуйста, помогите для подрывной деятельности SVN для того же самого. - person Bhavin_m; 21.02.2019
comment
@ Все те, у кого есть проблема «не найдено ни одного файла», вы можете перейти к .xcodeproj показать пакеты, затем вы можете увидеть xcuserdata, вы можете удалить оттуда. а затем совершить. - person Manish; 13.06.2019
comment
Я также получал не соответствующие файлы. По какой-то причине мне пришлось использовать полный путь: /Users/[ИМЯ ПОЛЬЗОВАТЕЛЯ, КАК УВИДЕНО В ТЕРМИНАЛЕ]/Desktop/[ПАПКА МОИХ ПРОЕКТОВ РАЗРАБОТКИ]/[ПАПКА МОЕГО ПРОЕКТА XCODE]/[ИМЯ ПРОЕКТА].xcworkspace/xcuserdata/[ИМЯ ПОЛЬЗОВАТЕЛЯ КАК ВИДНО В ТЕРМИНАЛЕ].xcuserdatad/UserInterfaceState.xcuserstate - person Felecia Genet; 20.01.2021

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

person Xing    schedule 03.03.2014
comment
github теперь предоставляет вам файл .gitignore по умолчанию, который включает этот файл среди других, но вам все равно нужно выполнить свои шаги. немного раздражает - person cspam; 20.02.2015
comment
Спасибо, мужики, git clean -f -d только что удалил . xcodeproj и другие файлы из моего проекта... - person Jeremy Luisetti; 05.10.2015
comment
Настоятельно рекомендуется использовать флаг --dry-run перед запуском git clean, т. е. git clean -f -d --dry-run, чтобы посмотреть, что произойдет. - person zero0cool; 23.03.2018
comment
Что делает git clean -f -d? - person allenlinli; 03.04.2019
comment
Не используйте git clean -f -d, если у вас есть незафиксированные изменения файлов! Я использовал его, и он удалил мои только что созданные файлы с уже созданным содержимым! :) Итак, сначала зафиксируйте, а затем очистите - person kalafun; 07.05.2019

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

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

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

person Josh Valdivieso    schedule 24.03.2015

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

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

person Lukas Kalinski    schedule 25.09.2015

У меня сработало просто «git clean -f -d»!

person rilar    schedule 14.07.2014

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

<сильный>1. Откройте терминал следующим образом

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

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

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

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

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

person Fangming    schedule 11.10.2017

Вот очень хорошее объяснение того, как рекурсивно удалить рассматриваемые файлы из вашей истории 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

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

person Zoran Simic    schedule 16.08.2011

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

добавьте эту строку в свой gitignore

*.xcuserdata
person Qadir Hussain    schedule 05.06.2018

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

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

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

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

person Mohammed Ali Khaled    schedule 02.10.2018

Для xcode 8.3.3 я только что проверил приведенный выше код и заметил, что теперь в этом случае нам нужно изменить команды, чтобы они понравились этому

сначала вы можете создать файл .gitignore, используя

 touch .gitignore

после этого вы можете удалить весь файл userInterface с помощью этой команды, и с помощью этой команды он будет уважать ваш файл .gitignore.

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

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

1. Щелкните правой кнопкой мыши файл, который вы хотите добавить в список игнорирования git, и выберите «Остановить отслеживание». введите здесь описание изображения

  1. снова щелкните правой кнопкой мыши тот же файл, и вы заметите, что опция игнорирования теперь включена, затем нажмите кнопку игнорирования.

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

  1. теперь вы можете сбросить или зафиксировать свои изменения для того же файла, это зависит от того, важны ли ваши изменения или нет. изменения в будущем не будут отслеживаться для выбранного файла.
person Harendra Tiwari    schedule 20.06.2021

Я думаю, что было бы лучше написать так.

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

person Hanlei    schedule 28.01.2019