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文件被设置为忽略除我告诉它不要忽略的内容之外的所有内容。像这样:

/*
!/content/

现在这显然意味着我也在告诉Git忽略.gitignore文件本身。只要我没有跟踪.gitignore文件,这就不是问题。但在某个时刻,我提交了.gitignore文件本身。这导致.gitignore文件被正确忽略。

因此,再增加一行就解决了这个问题:

/*
!/content/
!.gitignore

其他回答

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

例子:

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

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

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

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

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

在我的情况下,这是因为文件已经存在于存储库中,我试图忽略它。

以下是我为解决问题所做的工作:

将文件复制到临时文件夹从我的项目文件夹中删除它们。提交将这些文件从存储库中删除的更改将这些文件重新添加到我的项目文件夹

到那时,我对这些文件所做的任何更改都被忽略了。

我认为您不能忽略存储库中已经存在的文件。

对我来说,以前的答案都没有奏效。我不得不将.gitignore文本复制到exclude.txt文件中,该文件位于

<Your-project-folder>\.git\info

完成后,刷新更改,所有未跟踪的文件都将消失。照常承诺。

我的问题是(正如OP所建议的)一个损坏的.gitignore文件。我不相信这是真的,并忽略了这种可能性,直到其他一切都失败了。vi中没有显示损坏,但文件开头有两个字节导致.gitignore文件被忽略。对我来说,这些只有在我键入cat.gitignore时才会出现,它显示:

��# Built application files
*.apk
*.ap_

# ...

我不知道这些结果是如何出现的,但重新创建文件解决了问题。损坏文件的十六进制分析显示如下:

user@dev ~/project/myproject $ xxd -b .gitignore
00000000: 11111111 11111110 00100011 00000000 00100000 00000000  ..#. .
00000006: 01000010 00000000 01110101 00000000 01101001 00000000  B.u.i.