我在.gitignore中添加了以下一行:

sites/default/settings.php

但是当我输入git状态时,它显示文件为unstaging文件。

有什么问题吗?所有其他模式都很好。


当前回答

我也有同样的问题。在Win10上,我使用Geany编辑器,它使用UNIX行尾。现在我用notepad.exe创建了我的.gitignore,一切都很好。

其他回答

有一件事我认为在这里的优秀答案中被忽略了,那就是另一个。gitignore或多个。

在某种情况下,我克隆了一个repo,不知道为什么在运行git add时再次添加了一个“被忽略”的文件。结果是在子文件夹中有另一个.gitignore,并且覆盖了根文件夹中的文件。

/.gitignore
/some-folder/.gitignore
/some-folder/this-file-keeps-getting-staged

The

根 /.gitignore

忽略这个文件一直在上演吗

The

一些文件/ .gitignore

没有规范来忽略“this-file-keeps-getting- staging”文件。

这就是问题所在。

其中一种方法是在层次结构中搜索多个.gitignore文件。找出适用的规则。

确保你的.gitignore位于工作目录的根目录下,在该目录下运行git status并从状态输出中复制文件的路径,并将其粘贴到.gitignore文件中。

如果这不起作用,那么很可能您的文件已经被Git跟踪了。您可以通过git status的输出确认这一点。如果文件不在“Untracked files”一节中,那么Git已经在跟踪它了,它会忽略.gitignore文件中的规则。

在Git中忽略文件的原因是它们不会被添加到存储库中。如果您之前添加了一个想要忽略的文件,那么Git将跟踪它,并跳过与之匹配的忽略规则。Git这样做是因为该文件已经是存储库的一部分。

为了实际忽略该文件,必须取消跟踪并将其从存储库中删除。你可以使用git rm——cached sites/default/settings.php来实现。这将从存储库中删除文件,而无需物理删除文件(这就是——cached所做的)。提交更改后,该文件将从存储库中删除,忽略它将正常工作。

请使用此命令

git rm -rf --cached .
git add .

有时.gitignore文件即使是正确的也不能工作。Git忽略文件的原因是它们没有被添加到存储库中。如果您之前添加了一个想要忽略的文件,Git将跟踪它,并且将跳过任何跳过的匹配规则。Git这样做是因为该文件已经是存储库的一部分。

我遇到了这个问题,这是一个老问题了,但是我想要跟踪那个文件但不是在某些工作副本上跟踪它,你可以这样做

git update-index --assume-unchanged sites/default/settings.php

我刚刚尝试了git 1.7.3.1,并给出了这样的结构:

repo/.git/
repo/.gitignore
repo/sites/default/settings.php

其中repo因此是上面提到的“根”(我将它称为你的工作树的根),而.gitignore只包含sites/default/settings.php,忽略为我工作(无论.gitignore是否被添加到repo)。这与你的回购布局匹配吗?如果不是,有什么不同?