Почему .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 по-прежнему игнорируется.

Любые идеи?

Спасибо!


person Jacko    schedule 04.02.2010    source источник
comment
glucosia.xcodeproj/project.pbxproj уже случайно является частью репозитория?   -  person Alan Haggai Alavi    schedule 04.02.2010
comment
glucosia.xcodeproj / project.pbxproj уже отслеживается, но core-plot / framework / CorePlot-CocoaTouch.xcodeproj / project.pbxproj - нет. Мое решение - добавить в репо второй файл. Итак, похоже, что! обозначение применяется только к отслеживаемым файлам. Это не было ясно из документации   -  person Jacko    schedule 13.02.2010


Ответы (2)


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

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

Если glucosia.xcodeproj/project.pbxproj (как было предложено Аланом в комментариях) уже отслеживается, вам необходимо удалить его из cache, и тогда вступит в силу директива gitingore.

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

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

person VonC    schedule 04.02.2010

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

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

conf/
!conf/config.json.orig

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

conf/*
!conf/config.json.orig
person Brad    schedule 12.02.2013
comment
У меня аналогичная проблема, но в каталоге, который я игнорирую, есть несколько слоев, а файл, который я хочу отменить, имеет несколько слоев. Мой .gitignore выглядит примерно так: src / sys! Src / sys / lib / perl5 / myLib.pm - person schultzter; 28.11.2013