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

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


当前回答

好的,所以在我的案例中,接受的解决方案不起作用,这里描述了有效的方法:

Visual Studio 2013是否正在忽略.gitignore文件?

简而言之:

关闭Visual Studio。导航到.git文件夹删除ms-persist.xml重新启动Visual Studio

其他回答

这里的所有答案实际上都是变通方法。在运行gitinit之前,需要创建.gitignore文件。否则git永远不会知道你需要忽略这些文件,因为它们已经被跟踪了。

echo .idea/ >> .gitignore
git init

如果您每天都在开发,我建议您将习惯性忽略的文件添加到~/.gitignore_global文件中。这样,git就可以知道您(意思是“您的用户”,因为它是您的主目录中的文件)通常忽略的文件。

我注意到.gitignore的编码产生了影响——如果文件是Unicode,它会被忽略,如果是ASCII,它不会被忽略。

流程:

验证状态:PS>git状态创建一个函数以获取文件编码Test.gitignore的编码:PS>Get-FileEncoding.gitignor将编码更改为ASCII:PS>Set-Content.gitignore-encoding ASCII-Value(Get-Content.gitignore)确认:PS>git状态

尽管我尝试了本文和其他文章中的各种建议(例如Gitignore不起作用和Gitignore不工作-被忽略?),但我无法让git忽略.Gitignore.txt文件中包含的文件/文件夹。

我应该强调的是,与前面的许多回答不同,这些回答解决了先前提交的文件/目录无法被跟踪的问题,在我的情况下,我在第一次提交之前遇到了这个问题(即只运行git init,然后运行git status)。

还有一些其他有希望的建议,包括:

文本文件编码必须是ANSI而不是UTF,例如,在记事本中编码->ANSI++Windows的EOL转换,例如记事本中的编辑->EOL转换->Windows++.gitignore.txt中的项目没有前导或尾随空格定义文件夹时没有前导“/”

但没有一个适用或解决了我的问题。

在尝试了创建.gitignore.txt文件的不同方法之后,我设法弄清楚了如何使其工作,尽管我不能说我明白为什么。如果有人能提供解释,那将是很有意思的。

为了让那些可能发现前面的答案没有解决他们的问题的人受益,我将描述我尝试了什么,什么没有奏效,什么做了。希望通过这样做,它也可以揭示原因。请注意,我使用的是Windows 10。

尝试#1(失败)

在Windows资源管理器中创建新的txt文件:

(在项目文件夹中)右键单击->新建->文本文档将文件名更改为“.gitignore”在Notepad++中打开文件,输入的文件/目录名将被忽略编码->ANSI[注释1],保存更改

我运行git状态,但我想要忽略的文件/文件夹显示为未跟踪。我在Windows资源管理器中检查了文件财产。不出所料,文件名为“.gitignore”,文件类型为“文本文档(.txt)”。

注1:

一些贡献者指出,编码必须是ANSI(而不是UTF)。在Notepad++中,我发现无论我是执行编码->ANSI,还是编码->转换为ANSI+保存,都要关闭文件,然后重新打开(在Notepad++中),当我检查编码时,它总是报告UTF-8。.gitignore.txt文件也是如此,最终成功了。

尝试#2(失败)

在Notepad++中创建新的txt文件:

在Notepad++中创建新文件,输入要忽略的项目保存为“.gitignore.txt”,将“另存为类型”从“普通文本文件”(默认)更改为“所有类型”,并取消勾选“附加扩展名”框(默认勾选)。

我运行了git状态,和之前一样,所有文件/目录都列在未跟踪文件下。与之前一样,文件名为“.gitignore”,文件类型为“文本文档(.txt)”。

尝试#3(成功)

如果相同的文件(.gitignore.txt)仍然在Notepad++中打开:

另存为“.gitignore”选择了“另存为类型”的“普通文本文件”,这会自动勾选“附加扩展名”框

我注意到创建的文件在Windows资源管理器中似乎没有名称。我检查了文件的财产:文件名字段为空,文件类型为“文本文档(.gitignore)”。在Windows资源管理器(查看->文件扩展名)中勾选“文件扩展名”后,“无名称”文件显示“.gitignere”扩展名。

我运行了git状态,这次我想要忽略的文件/文件夹没有被列为未跟踪文件-成功!

在Notepad++中打开文件时,我注意到编码是UTF-8,并且文件名被标识为“.gitignore”(与Windows资源管理器不同)。

因此,创建txt文件的方式似乎很微妙。也许这是Windows独有的特点?

我在Ubuntu上也有同样的问题,我从终端创建了.gitignore,它对我很有用

touch.gitignore

我刚刚遇到这个问题。gitignore文件中的内容继续出现在未跟踪文件列表中。

我用这个来创建忽略文件:

echo "node_modules" > .gitignore

事实证明,双引号导致了我的问题。我删除了忽略文件,然后再次使用了不带引号的命令,结果如预期。我不需要搞乱文件编码。我在使用Cmder的Windows 10机器上。

例子:

echo node_modules > .gitignore