添加文件时,为什么我的.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
我缺少什么?为什么要包含这些文件?
答
您最初使用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。谢谢! –
我想你可以在'.gitgnore'中写'* .suo'和'Debug /'。 +1为您的个人资料图片! – juan
@juan这没有什么区别。这些文件仍然被添加,'git status'显示相同的输出。 –
您是否从索引或树中删除文件?如果这些文件仍在上演,请尝试'git reset HEAD'。如果你犯了这些错误,请尝试'git rm --cached '但要小心。 [这个答案](https://stackoverflow.com/questions/11451535/gitignore-is-not-working)可能会有所帮助。 –
juan