2013-04-12 52 views
0

我似乎无法弄清楚为什么我的.gitignore不会忽略一个简单的文本文件。我已经阅读了手册,我想我已经完成了所有必要的步骤。.gitignore无法忽略新创建的文本文件

首先,我创建了一个新的回购协议是这样的:

C:\> mkdir test 
C:\> cd test 
C:\test> git init 

然后我创建并comitted而忽略了一个名为junk.txt

C:\test [master]> touch .gitignore 
C:\test [master +1 ~0 -0 !]> echo 'junk.txt' >> .gitignore 
C:\test [master +1 ~0 -0 !]> git add .gitignore 
C:\test [master +1 ~0 -0]> git commit -m 'ignoring junk.txt' 

文件通过一个的.gitignore现在我会想如果我有一个名为junk.txt的文件,git会忽略它。但是它怎么还说这是一个没有跟踪的文件呢?

C:\test [master]> touch junk.txt 
C:\test [master +1 ~0 -0 !]> git status 
# On branch master 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  junk.txt 

我使用msysgit

C:\test [master +1 ~0 -0 !]> git --version 
git version 1.8.0.msysgit.0 
+0

你可以做干净的,它会被删除。如果它在那里,而不是添加到git中,它的状态应该是没有跟踪的。 –

+1

@matt junk.txt是在.gitignore设置后添加的新文件,因此与该帖子中提到的缓存无关。我已经尝试过rm - 缓存,它会给出错误,并且该文件仍然被检测为未跟踪的文件 – gerrytan

+1

您可以验证.gitignore是否包含您认为它包含的内容?看起来你在使用Windows时输入bash命令,这可能是你麻烦的根源。 – meagar

回答

0

Gerrytan,您使用的是不使用bash语法的系统上bash的语法。

具体而言,当你做到以下几点:

echo 'junk.txt' >> .gitignore 

你告诉混帐忽略文件“junk.txt” 包括引号。

如果你曾经使用bash中,或任何sh兼容的shell,那么该命令会告诉混帐忽略“junk.txt” 排除引号,因为在那些贝壳,引号表示字边界,但它们在cmd.exe(Windows中的标准命令行)中没有特殊含义。

我建议你在编辑器中打开.gitignore并查看条目。

+1

.gitignore上没有任何引号,但是我创建.gitingore的方式似乎会导致文件编码问题 - 因此它不会被git读取。当我使用记事本创建它时,它按预期工作。谢谢您的帮助 – gerrytan