为什么.gitignore不包含以!为前缀的文件!

时间:2010-02-04 02:34:03

标签: git include 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 个答案:

答案 0 :(得分:6)

gitignore man page中所述:

  

gitignore文件指定git应忽略的故意未跟踪文件

如果已跟踪glucosia.xcodeproj/project.pbxproj(由评论中的Alan建议),则需要将其从缓存中删除,然后gitingore指令才会生效。

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

如果文件已提交,请参阅此SO answergit commit --amend将其从最新提交中删除)

答案 1 :(得分:5)

我有同样的问题,但是有一个不同的解决方案。如果忽略目录但不忽略其中的文件,则无法使用。您必须忽略目录的文件

这不起作用:

conf/
!conf/config.json.orig

这将有效:

conf/*
!conf/config.json.orig