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

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


当前回答

另一个可能的原因是Git客户端的几个实例同时运行。例如,“git shell”+“GitHub Desktop”等。


这发生在我身上。我使用“GitHub Desktop”作为主客户端,它忽略了一些新的。gitignore设置:提交后提交:

你犯了什么。接下来,提交:它忽略.gitignore设置。提交包括.gitignore中提到的许多临时文件。清除Git缓存;检查.gitignore是否为UTF-8;删除文件→ 犯罪→ 将文件移回;跳过一次提交–没有任何帮助。

原因:Visual Studio代码编辑器是在后台使用同一个打开的存储库运行的。Visual Studio Code内置了Git控件,这会导致一些冲突。

解决方案:仔细检查多个隐藏的Git客户端,一次只能使用一个Git客户端(尤其是在清除Git缓存时)。

其他回答

和其他解决方案一样,首先提交,并注意您将丢失任何未提交的更改。

我有更好的结果:

git rm -r --cached .
git reset HEAD --hard
git status

请注意,状态现在不应该有任何修改过的文件。

您也可以使用sudo命令编辑.gitignore文件。我遇到了同样的问题,在执行命令gitstatus时,我仍然可以看到“应该被忽略”的文件。

在使用nano.gitignore而不是sudo nano.gitinore进行编辑时,我可以看到正确的反射。

我看到你们中的一些人已经回答了这个问题,但我不知道是否说得很清楚。

在我的案例中,问题出现的原因是使用echo命令创建.gitignore文件,导致文件编码被更改。

为了解决我必须打开文本文件的问题,请单击另存为并将底部选项卡中的编码更改为UTF-8。

当我使用touch命令创建文件并通过文本编辑器编辑其内容时,问题没有发生。

另一个可能的原因是Git客户端的几个实例同时运行。例如,“git shell”+“GitHub Desktop”等。


这发生在我身上。我使用“GitHub Desktop”作为主客户端,它忽略了一些新的。gitignore设置:提交后提交:

你犯了什么。接下来,提交:它忽略.gitignore设置。提交包括.gitignore中提到的许多临时文件。清除Git缓存;检查.gitignore是否为UTF-8;删除文件→ 犯罪→ 将文件移回;跳过一次提交–没有任何帮助。

原因:Visual Studio代码编辑器是在后台使用同一个打开的存储库运行的。Visual Studio Code内置了Git控件,这会导致一些冲突。

解决方案:仔细检查多个隐藏的Git客户端,一次只能使用一个Git客户端(尤其是在清除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独有的特点?