2014-05-17 55 views
35

不管我把.gitignore GET混帐忽略UserInterfaceState.xcuserstate文件如下:gitignore没有忽视文件

$ git status 
On branch master 
Your branch is up-to-date with 'origin/master'. 

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: .gitignore 
    modified: CalFoo.xcodeproj/project.xcworkspace/xcuserdata/wcochran.xcuserdatad/UserInterfaceState.xcuserstate 

我使用/编辑在this post列出的.gitignore文件。 我试过所有匹配的模式,包括确切的路径名称:CalFoo.xcodeproj/project.xcworkspace/xcuserdata/wcochran.xcuserdatad/UserInterfaceState.xcuserstate无济于事。

这个特殊的问题来自Xcode用于创建初始git repo的工作流程,之后添加了here.gitignore文件。忽略之前在git中跟踪的文件的更一般的答案可以从this question找到(我猜我从来没有在我的搜索中找到这篇文章,因为它没有标题中的“gitignore”)。

+0

可能重复[停止跟踪并忽略Git中文件的更改](http://stackoverflow.com/questions/936249/stop-tracking-and-ignore-changes-to-a-file-in-git ) – Unicornist

+0

@Unicornist不是重复 - 我想要一个特定的文件删除并忽略*无处不在*,而另一个问题是想要某些文件不被全局跟踪。 – wcochran

回答

60

你只能忽略未受版本控制的文件,但该文件已知git。

如果你想让git跟踪那个文件,那么就不需要告诉git忽略它。

如果您不希望git使用git rm跟踪该文件,并且您的忽略规则将开始工作。

注意:git rm将删除该文件。使用git rm --cached从回购中删除而不是从磁盘中删除。

+16

注意,'git rm'会删除文件。使用'git rm --cached'从repo中删除而不是从磁盘中删除。 – Darkhogg

+0

谢谢@michas和Darkhogg--它现在不被跟踪获取并从回购中删除。 – wcochran

+2

这个答案对应于我曾经相信的东西:但是今天,我有一个文件在.gitignore中,它不受控制,它仍然在“git status”中显示为未跟踪文件(其文件名为'build' )。没有任何“git rm build”或触摸.gitignore的帮助。有任何想法吗? – Stabledog

10

我有同样的问题。

首先提交任何未更改代码,然后,运行以下命令:

git rm -r --cached . 

这从指数(分段区域)删除任何已更改的文件,然后只需运行:

git add . 

提交它:

git commit -m ".gitignore working now" 

要撤消git rm --cached文件名,请使用git add filename。