这是我的.gitignore文件的内容,它位于我的存储库的根目录:
# grails stuff to ignore
target
*.iml
*.ipr
.idea
*.log
*.swp # vi swap files
.DS_Store # OS X Finder cache files
# cocoapods stuff to ignore
Pods
Podfile.lock
我的项目根目录中的.DS_Store
文件被正确忽略,但git status给出:
$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
(use "git push" to publish your local commits)
Untracked files:
(use "git add <file>..." to include in what will be committed)
ios/.DS_Store
nothing added to commit but untracked files present (use "git add" to track)
那么为什么ios/.DS_Store
不被忽视?
使用Apple提供的git版本在OS X 10.9.2上工作:“git version 1.8.5.2(Apple Git-48)”
答案 0 :(得分:9)
好吧,我认为它正在发生,因为忽略规则中有额外的空间,因为你之后添加的评论以及因为它们的模式不匹配。已在git version 1.8.3.2
,Ubuntu 13.10
.gitignore
中的以下条目可以正常工作(没有任何额外空间)
.DS_Store
虽然这些都不起作用(规则后有空格)
*.DS_Store # OS X Finder cache files
.DS_Store # OS X Finder cache files
我的猜测是,您的PROJECT_DIR/.DS_Store
已经检入了回购广告,因此未显示在git status
中,您确定PROJECT_DIR/.DS_Store
尚未成为回购的一部分吗? ?
执行git log .DS_Store
并查看是否有任何提交。
如果是,请使用有效的第一个忽略规则,并删除现有的.DS_Store
git rm --cached .DS_Store
git commit -m "msg"
<强> 修改 强>
您输入的评论格式错误,必须将它们放在文件/忽略规则的开头。 Check this
我使用评论*.swp
验证了您的其他忽略规则,但它也无效。
gitignore文件中的每一行都指定一个模式。在决定是否忽略路径时,Git通常会检查来自多个源的gitignore模式,具有以下优先顺序,从最高到最低(在一个优先级内,最后一个匹配模式决定结果)
答案 1 :(得分:0)
当我们认为.gitignore不起作用时,原因之一可能是实际上是提交了那些文件。因此.gitignore不能忽略它!
通过此链接https://www.atlassian.com/git/tutorials/saving-changes/gitignore,“ git check-ignore -v pesty.file.name”可以帮助调试.gitignore。这是一种非常有用的调试方法。可能还有更多其他情况导致.gitignore无法正常工作。如果每个人都可以分享失败的案例,以及如何使其成功,则知识库可以不断发展。这个“ check-ignore -v”是我们的朋友。