Почему.gitignore не включает файл с префиксом!

Мой файл.gitignore выглядит следующим образом:

build/
glucosia.xcodeproj/
!glucosia.xcodeproj/project.pbxproj
core-plot/framework/build
core-plot/framework/CorePlot-CocoaTouch.xcodeproj/
!core-plot/framework/CorePlot-CocoaTouch.xcodeproj/project.pbxproj
.DS_Store
Classes/.DS_Store

Как ни странно, glucosia.xcodeproj/project.pbxproj не игнорируется, как я и ожидал.

Но, core-plot/framework/CorePlot-CocoaTouch.xcodeproj/project.pbxproj все еще игнорируется.

Есть идеи?

Спасибо!

2 ответа

Решение

Как уже упоминалось в gitignore справочная страница:

gitignore file указывает намеренно не отслеживаемые файлы, которые git должен игнорировать

Если glucosia.xcodeproj/project.pbxproj (как предложил Alan Haggai Alavi в комментариях) уже отслежено, вам нужно удалить его из кэша, и тогда вступит в силу директива gitingore.

git rm --cached glucosia.xcodeproj/project.pbxproj

Если файл уже был зафиксирован, см. Этот SO ответ (git commit --amend удалить его из последнего коммита)

У меня была та же проблема, но другое решение. Если вы игнорируете каталог, но не файл внутри него, он не будет работать. Вы должны игнорировать файлы каталога.

Это не работает:

conf/
!conf/config.json.orig

Это будет работать:

conf/*
!conf/config.json.orig
Другие вопросы по тегам