Я использую 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"