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/不出现在未跟踪的文件列表中。

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


当前回答

我也有同样的问题。我认为问题是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(理想情况下)。即使文件看起来格式正确,也尝试替换换行符。我知道,这听起来很奇怪,但它对我有用

其他回答

如果您是Notepad++用户,请尝试执行以下操作:

使用Notepad++打开.gitignore文件,然后执行以下操作:

菜单编辑→ EOL转换→ Windows格式→ 拯救

再次尝试使用gitstatus,看看它是否适合您。

我在这里发布了类似问题的答案。

我遇到了这个问题,一个.gitignore文件包含以下行:

lib/ext/

我刚刚意识到,事实上,这个目录是指向其他文件夹的符号链接:

ls -la lib/ext/
lrwxr-xr-x 1 roipoussiere users 47 Feb  6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib

在lib/ext/行上,Git实际上查找一个文件夹,但符号链接是一个文件,因此我的lib文件夹不会被忽略。

我通过用.gitignore文件中的lib/ext替换lib/ext/来解决这个问题。

特别适用于Windows用户:如果您有未跟踪的文件,并且无法清除/删除缓存的文件。尝试打开PowerShell并将.gitignore文件转换为UTF-8编码:

$Myfile = Get-Content .\.gitignore`
$Myfile | Out-File -Encoding "UTF8" .gitignore

您只需要这样做一次,就可以对该目录的.gitignore文件进行编码,并且由于该文件随后被正确编码,因此无论您将来何时编辑该文件,它都会正常工作。我认为这是由于GitHub无法读取.gitignore文件的非UTF-8编码而出现的问题。据我所知,Windows尚未解决此问题。这没什么大不了的,只是当它不工作时调试起来很痛苦。

固定的好的,我在Windows上的记事本中创建了.gitignore文件,但它不起作用。当我在Linux上查看.gitignore文件时,它看起来像是有组织的胡言乱语——也许记事本写的是Unicode,而不是ASCII或任何8位。

所以我在我的Linux盒子上重写了这个文件,当我把它拉回到Windows时,它工作得很好!万岁!

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

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

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

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

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