Я использую Git для управления версией проекта Xcode 4. Я явно добавил ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate
в .gitignore
, но Git он не будет игнорировать его. Любые идеи, почему это так?
Невозможно игнорировать UserInterfaceState.xcuserstate
Ответ 1
Git, вероятно, уже отслеживает файл.
Из gitignore docs:
Чтобы остановить отслеживание отслеживаемого файла, используйте 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
.
Ответ 2
В случае, если проигнорированный файл продолжал появляться в списке без отслеживания, вы можете использовать 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
Ответ 3
Весь ответ велик, но вот он удалит для каждого пользователя, если вы работаете в другом Mac (домашнем и офисном)
git rm --cache */UserInterfaceState.xcuserstate
git commit -m "Never see you again, UserInterfaceState"
Ответ 4
Если бы друг показал мне этот удивительный сайт https://www.gitignore.io/. Введите IDE по вашему выбору или другим параметрам, и он автоматически сгенерирует файл gitignore
, состоящий из полезных игнорирования, одним из которых является xcuserstate
. Перед загрузкой вы можете просмотреть файл gitignore
.
Ответ 5
Если файл продолжает отображаться даже после выполнения всех упомянутых здесь действий, убедитесь, что этот флажок в настройках Xcode не установлен:
Ответ 6
Просто "git clean -f -d" работал на меня!
Ответ 7
Вот очень хорошее объяснение того, как рекурсивно удалять файлы из истории git: http://help.github.com/remove-sensitive-data/
Очень полезно, потому что в противном случае инструменты имеют тенденцию "зависать", пытаясь показать diff на тех огромных файлах, которые не должны были быть проверены в первую очередь...
Вот что вы можете сделать (короче), чтобы избавиться от самого большого материала:
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
Работала очень хорошо для меня:)
Ответ 8
Вот некоторые демонстрации и короткие сокращения, если вы используете GitHub, основные идеи одинаковы.
1. Открыть терминал, подобный этому
2. Вставьте следующую команду на терминал, а затем пробел, а затем вставьте путь к файлу .xcuserstate просто так:
3. Убедитесь, что у вас есть правильный git игнорировать и затем передать код:)
Ответ 9
У меня ничего не получалось, но это
добавить эту строку в ваш gitignore
*.xcuserdata
Ответ 10
Это работает для меня
-
Откройте папку, которая содержит файл
project.xcworkspace
из терминала. -
Напишите эту команду:
git rm --cached *xcuserstate
Это удалит файл.
Ответ 11
Для xcode 8.3.3 я только что проверил проверенный код и заметил, что теперь в этом casewe необходимо изменить команды, чтобы это понравилось
сначала вы можете создать файл .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"
Ответ 12
Я думаю, что было бы лучше написать так.
git rm --cache *//UserInterfaceState.xcuserstate**