Я использую Git для управления версиями проекта Xcode 4. Я явно добавил ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate
к .gitignore
, но Git это не проигнорирует. Любые идеи, почему это так?
Не могу игнорировать UserInterfaceState.xcuserstate
Ответы (13)
Git, вероятно, уже отслеживает файл.
Чтобы остановить отслеживание отслеживаемого файла, используйте 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
.
[username]
на базе машины? Будет полезно при работе в команде!
- person MEnnabah; 18.08.2018
В случае, если игнорируемый файл продолжает отображаться в списке неотслеживаемых файлов, вы можете использовать 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
git clean -f -d --dry-run
, чтобы посмотреть, что произойдет.
- person zero0cool; 23.03.2018
git clean -f -d
?
- person allenlinli; 03.04.2019
git clean -f -d
, если у вас есть незафиксированные изменения файлов! Я использовал его, и он удалил мои только что созданные файлы с уже созданным содержимым! :) Итак, сначала зафиксируйте, а затем очистите
- person kalafun; 07.05.2019
Все ответы хороши, но вот тот, который будет удален для каждого пользователя, если вы работаете на разных Mac (домашний и офисный)
git rm --cache */UserInterfaceState.xcuserstate
git commit -m "Never see you again, UserInterfaceState"
Друг показал мне этот удивительный сайт https://www.gitignore.io/. Введите IDE по вашему выбору или другие параметры, и он автоматически сгенерирует файл gitignore
, состоящий из полезных игнорируемых элементов, одним из которых является файл xcuserstate
. Вы можете предварительно просмотреть файл gitignore
перед загрузкой.
У меня сработало просто «git clean -f -d»!
Вот несколько демонстраций и сокращений, если вы используете GitHub, основные идеи те же.
<сильный>1. Откройте терминал следующим образом
<сильный>2. Вставьте приведенную ниже команду в терминал, а затем пробел, а затем вставьте путь к файлу .xcuserstate просто так
<сильный>3. Убедитесь, что у вас есть правильный git ignore, а затем зафиксируйте код :)
Вот очень хорошее объяснение того, как рекурсивно удалить рассматриваемые файлы из вашей истории 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
Работал очень хорошо для меня :)
У меня ничего не получалось, но это
добавьте эту строку в свой gitignore
*.xcuserdata
Это работает для меня
Откройте папку, содержащую файл проекта
project.xcworkspace
, из терминала.Напишите эту команду:
git rm --cached *xcuserstate
Это удалит файл.
Для 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"
Вот еще одно простое решение, если вы используете приложение исходного дерева. вот инструкции
1. Щелкните правой кнопкой мыши файл, который вы хотите добавить в список игнорирования git, и выберите «Остановить отслеживание».
- снова щелкните правой кнопкой мыши тот же файл, и вы заметите, что опция игнорирования теперь включена, затем нажмите кнопку игнорирования.
- теперь вы можете сбросить или зафиксировать свои изменения для того же файла, это зависит от того, важны ли ваши изменения или нет. изменения в будущем не будут отслеживаться для выбранного файла.
Я думаю, что было бы лучше написать так.
git rm --cache *//UserInterfaceState.xcuserstate**