Я использую Git для контроля версий проекта Xcode 4. Я явно добавил ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate
к .gitignore
, но Git это не проигнорирует. Есть идеи, почему это так?
Я использую Git для контроля версий проекта Xcode 4. Я явно добавил ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate
к .gitignore
, но Git это не проигнорирует. Есть идеи, почему это так?
Ответы:
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
.
В случае, если игнорируемый файл продолжал отображаться в списке без отслеживания, вы можете использовать его 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
git clean -f -d
?
git clean -f -d
если у вас есть незафиксированные изменения файлов! Я использовал его, и он удалил мои недавно созданные файлы с уже созданным содержимым! :) Так что сначала
Все ответы отличные, но вот тот, который будет удален для каждого пользователя, если вы работаете на разных Mac (дома и в офисе)
git rm --cache */UserInterfaceState.xcuserstate
git commit -m "Never see you again, UserInterfaceState"
Если бы друг показал мне этот удивительный сайт https://www.gitignore.io/ . Введите IDE по вашему выбору или другие параметры, и он автоматически создаст gitignore
файл, состоящий из полезных игнорирований, одним из которых является xcuserstate
. Вы можете просмотреть gitignore
файл перед загрузкой.
Если файл продолжает обнаруживаться даже после выполнения всего упомянутого здесь, удостоверьтесь, что этот флажок в настройках XCode не отмечен:
Вот несколько демонстраций и кратких сокращений, если вы используете 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"