2012-09-14 61 views
4

我的问题是不一样的Why doesn't gitignore work in this case?也不.gitignore is not working为什么.gitignore无效?

文件/ conf.php已经在的.gitignore,但git的状态仍显示它的修改,为什么?

我的意思是,如果它是的.gitignore这个文件不应该被跟踪......

cat .gitignore 
files/conf.php 
[[email protected] blogmi]# git status 
# On branch 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: files/conf.php 
# 
no changes added to commit (use "git add" and/or "git commit -a") 
+4

如果该文件已在存储库中进行跟踪,我认为它仍然显示为已更改,无论是否存在于.gitignore中 –

+0

您是否已在跟踪'conf.php'?准确地说是 –

回答

11

.gitignore只是忽略未跟踪文件。一旦你开始跟踪一个文件(就像你使用files/conf.php所做的那样),它不会被忽略。

您可以使用git rm --cached files/conf.php从git中删除文件,而无需从文件系统中实际删除它。提交后,该文件将开始被正确忽略。

+0

。从我所了解的情况来看,你已经在某个时刻“添加”了,并且准备好提交文件。即使您将它添加到.gitignore,它也不会被忽略,直到您运行上面建议的命令@KevinBallard。然后,它不会被包括在内。 –

+0

我的一个问题是,如果您将文件取消存储,并将其添加到.gitignore ...如果您然后说'git add '它会添加它吗? –

+2

@iight:没有提交。该文件实际上已经由repo提交和跟踪,但包含未分离的更改。这并不重要。在第二个问题中,'git add'实际上会忽略这个文件(我相信它会告诉你它跳过了这个文件)。你必须使用'git add -f $ file'来使它工作。 –