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按预期工作:

git rm -r --cached 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缓存时)。

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

echo .idea/ >> .gitignore
git init

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

对我来说,这又是一个问题。我的.gitignore文件被设置为忽略除我告诉它不要忽略的内容之外的所有内容。像这样:

/*
!/content/

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

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

/*
!/content/
!.gitignore

PhpStorm(可能还有其他一些IDE用户),在我的案例中,问题是我通过查找器在项目外部创建并添加了文件。

我删除了那个文件,并在PhpStorm项目中重新创建了相同的文件,右键单击->新建->文件,它立即工作。

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

touch.gitignore