添加文件时,为什么我的.gitignore文件不工作?

问题描述:

我正在寻找切换到git(来自Perforce)。我正在对文件进行初始添加,但由于某种原因我的文件没有被使用。在验证通过git status添加的文件时,我可以看到列出的文件应该被忽略。我必须错过一些非常基本的东西。添加文件时,为什么我的.gitignore文件不工作?

下面是我和测试一个非常简化的目录结构:

d:/git/ 
    .git 
    Test/ 
     test.suo 
     bin/ 
      Debug/ 
       test.dll 
    .gitignore 

这里是我的.gitignore文件的相关部分:

**/*.suo 
**/[Bb]in/Debug 

当添加文件,我打电话:

git add Test 

然后我验证已添加的文件:

git status 

这表明我:

new file: Test/bin/Debug/test.dll 
new file: Test/test.suo 

我缺少什么?为什么要包含这些文件?

+0

我想你可以在'.gitgnore'中写'* .suo'和'Debug /'。 +1为您的个人资料图片! – juan

+0

@juan这没有什么区别。这些文件仍然被添加,'git status'显示相同的输出。 –

+0

您是否从索引或树中删除文件?如果这些文件仍在上演,请尝试'git reset HEAD '。如果你犯了这些错误,请尝试'git rm --cached '但要小心。 [这个答案](https://stackoverflow.com/questions/11451535/gitignore-is-not-working)可能会有所帮助。 – juan

您最初使用PowerShell的echo $null >> .gitignore来创建该文件是个问题。这是因为它不会创建一个完全空的文件(根本没有字节),而是在开始时使用UTF-16小端字节顺序标记(“BOM”)的文件。

正如在the comments to this answer中指出的那样,git这样的工具不能很好地工作,git通常希望使用无BOM的文件,通常采用UTF-8编码。

看起来像it's actually quite hacky用PowerShell创建一个空文件。

+0

伟大的跟进马特,+1。我最初做了一个'touch .gitignore',然后我意识到,哦,是的,Windows。谢谢! –