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正在跟踪.gitignore中列出的文件的情况时,我会使用以下方法:

git update-index --skip-worktree <file_name>

其他回答

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

touch.gitignore

我的30美分把戏:

请清理您的目录。git clean-f(我尝试了git rm-r--cached。但它对我不起作用。)

警告:gitclean-f将删除未跟踪的文件,这意味着它们将永远消失,因为它们没有存储在存储库中。在执行此操作之前,请确保确实要删除所有未跟踪的文件。

也许你可以尝试gitclean-xdf,它可以删除被忽略的目录和未跟踪的文件

现在将HEAD带到当前位置git重置HEAD——硬。检查git状态。现在创建.gitignore,在我的情况下,它希望忽略一个名为data的文件夹。所以我写了/data/(首字母/表示文件/文件夹,后字母/仅表示文件夹)。现在执行gitadd、commit和push。

尽管我尝试了本文和其他文章中的各种建议(例如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独有的特点?

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

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

简而言之:

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

这听起来可能很傻,但解决了我的问题的是意识到.gitignore工作正常,即使它在gitstatus上显示deleted:yourfile。

我打算忽略一个错误日志文件,忽略我造成的任何错误,但要保存其他开发人员造成的错误,以防有一天他们在调试一个奇怪的问题时派上用场。然而,git不允许您“忽略”同时保存文件。

我想让它“及时冻结”,但git说它要么被跟踪,要么根本不允许它在那里。