由于某种原因,我的.gitignore文件无法正常工作,而且没有多少谷歌搜索能够修复它

*.apk
*.ap_
*.dex
*.class
**/bin/
**/gen/
.gradle/
build/
local.properties
**/proguard/
*.log

它在主目录中,这是我的git repo。我运行Git 1.8.4.2,因为我使用的是运行OSX 10.8.6的MacBook。


当前回答

您的版本控制中的文件/文件夹不会因为您将它们添加到.gitignore中而自行删除。它们已经在存储库中,您必须删除它们。你可以这样做:

记住,在你做这件事之前,要把你改变的一切都提交给别人!

git rm -rf --cached .
git add .

这将从存储库中删除所有文件并将其添加回(这一次遵循.gitignore中的规则)。

其他回答

我的问题是,我最初在Mac上创建.gitignore,但现在在Windows机器上工作。在Mac电脑上,文件路径中使用“/”。在Windows上使用“\”。

所以为了让.gitignore文件正常工作,我必须使用一致的符号。在这种情况下,我必须对每个要添加的文件路径使用“/”,即使复制时是这样的:“file\path”。

在这个愚蠢的事情上浪费了好几个小时(这真的让我很烦)。

有人可能会觉得这很有用。我的问题是格式。由于某种原因,在没有进行任何更改的情况下,git不喜欢文件内容的格式。.gitignore中的目录如下:

directory1/*
directory2/*
directory3/*

当我将格式更改为

directory1/
directory2/
directory3/

目录再次被忽略,我唯一需要添加/commit/push的就是.gitignore。

我知道这已经有很多答案了,但我最后回答这个问题的方式如下。。。

在新的repo中安装npm之前,我已经完成了'node_modules'>.gitignore,直到我更改了.gitignore'(添加了'**/node_modules'、'/node_mdules'等),然后进入git状态,我才意识到它是二进制格式,而不是文本格式,因此git无法识别它。

我通过删除.gitignore文件并将其重新添加到编辑器中来解决问题。

我用一些东西为我生成了common.gitignore,我遇到了这个问题。读了@Ozesh的答案后,我在VS代码中打开了它,因为它在右下角有一个很好的指示器,显示了行尾的类型。这是低频,所以我按照建议转换为CRLF,但没有骰子。

然后我看了看行尾,发现它是用UTF16保存的。所以我使用UTF8编码一个voila重新保存,它起了作用。我认为CRLF并不重要,所以我把它改回LF以确保它仍然有效。

当然,这不是OP的问题,因为他已经提交了文件,所以它们已经被索引了,但我想我会分享一下,以防其他人遇到这个问题。

太长,读不下去了如果你还没有提交文件,并且.gitignore仍然不受尊重,那么检查文件编码,确保其UTF8,如果这不起作用,那么可以尝试使用换行符。

这3个命令将解决问题,您的.gitignore将工作:

git rm -r --cached .
git add .
git commit -m 'Remove ignored files'

现在检查状态:

git status