.gitignore не будет игнорировать каталог

Я пытаюсь игнорировать папки xcuserdata, которые xcode 4 изменяет, и они продолжают возвращаться, несмотря на то, что они находятся в моем файле .gitignore.

Мой .gitignore файл в виде одной строки:

xcuserdata

Но как только я изменяю что-либо UI в xcode, я получаю следующее:

#   modified:   XXXXXXXX.xcodeproj/project.xcworkspace/xcuserdata/XXXX.xcuserdatad/UserInterfaceState.xcuserstate

Я сделал...

git rm -r --cached XXXXXXXX.xcodeproj/project.xcworkspace/xcuserdata/XXXX.xcuserdatad/UserInterfaceState.xcuserstate

... и попытался...

git rm -r --cached XXXXXXXX.xcodeproj/project.xcworkspace/xcuserdata

... за которым следует фиксация. Я сделал это близко к 10 раз, и он просто не исчезнет и будет проигнорирован. Он продолжает возвращаться.

Что я делаю неправильно? Ясно, что я не понимаю. Файл был добавлен в репозиторий, когда я его впервые создал, и теперь я пытаюсь избавиться от него.

Я просто хочу, чтобы этот файл полностью не отслеживался, как будто он никогда не добавлялся в репозиторий.

Ответ 1

После выполнения

git rm -r --cached XXXXXXXX.xcodeproj/project.xcworkspace/xcuserdata

проверьте, что git status сообщает, что файлы в этой папке были удалены. Затем после вашего фиксации убедитесь, что git говорит, что ничего не зафиксировать.

Тот факт, что вы сделали это "10 раз", и он приходит как измененный, показывает, что вы не делаете это правильно, и папка (на самом деле файлы внутри нее) все еще отслеживаются.

Кроме того, содержание .gitignore кажется прекрасным, и я даже подтвердил на своем репо, что он работает.

Ответ 2

Если вы не можете нажать фиксацию только потому, что UserInterfaceState.xcuserstate было изменено, здесь быстро исправить:

  • Откройте Организатор, перейдите в Хранилища, скопируйте код фиксации (что-то вроде f01a2147218d by username)
  • Откройте терминал, перейдите в папку проекта, git reset --hard f01a2147218d
  • Нажмите фиксатор!

Ответ 3

попробуйте использовать xcuserdata/в .gitignore