Git似乎忽略了我的.gitignore文件-.gitignorefile是否已损坏?Git希望使用哪种文件格式、区域设置或文化?

我的.gitignore:

# This is a comment
debug.log
nbproject/

git状态的输出:

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       debug.log
#       nbproject/
nothing added to commit but untracked files present (use "git add" to track)

我希望debug.log和nbproject/不出现在未跟踪的文件列表中。

我应该从哪里开始解决这个问题?


当前回答

gitignore还有一个问题可能会发生,特别是对于Windows用户。Git不喜欢你命名.gitignore(例如unity.gitignore)。

您希望始终将其命名为.gitignore,或者在Windows上命名为.git ignore,因为Windows认为您正在尝试重命名它而不使用文件名。

其他回答

PhpStorm(可能还有其他一些IDE用户),在我的案例中,问题是我通过查找器在项目外部创建并添加了文件。

我删除了那个文件,并在PhpStorm项目中重新创建了相同的文件,右键单击->新建->文件,它立即工作。

我也有同样的问题。我认为问题是CR与CR+LF之间的差异。我使用CMD(在Windows 7上)和以下命令将这些东西存储在.gitignore中:

Bad:

echo "file_to_be_ignored.py" >> .gitignore<br>
echo "*~" >> .gitignore

Etc.

问题是,该命令没有为Git放置正确的行尾标记,以识别换行符(当Git需要另一行时,可以是CR或CR+LF)。我通过手动替换Vim中的每一个换行符来解决了这个问题(Vim来拯救!),它工作得很好。

尝试在Notepad++或Vim中编辑.gitignore(理想情况下)。即使文件看起来格式正确,也尝试替换换行符。我知道,这听起来很奇怪,但它对我有用

还可以查看放置.gitignore的目录。

它应该位于项目的根目录中:

./myproject/.gitignore

不在

./myproject/.git/.gitignore

在不向项目添加另一个提交的情况下,一行代码就足以让.gitignore按预期工作:

git rm -r --cached debug.log nbproject

这将从存储库中删除它们,但仍保留它们。简单地说,它会删除与它们相关的任何更改历史记录,并且不会在将来的任何提交中跟踪它们的更改。你可以在这里找到更好的解释。

此问题的另一个原因是语句前的空格或制表符:

例子:

# Be aware of the following:
 notWorkingIgnore.*
workingIgnore.*

正如下面的评论所指出的,尾随空格也是一个问题:

# Be aware of the following:
notWorkingIgnore.* #<-Space
workingIgnore.*#<-Nospace