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

sites/default/settings.php

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

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


当前回答

确保.gitignore没有扩展名!!它不能是。gitignore。txt,在windows中只是命名为。gitignore。它会起作用的。

其他回答

确保.gitignore没有扩展名!!它不能是。gitignore。txt,在windows中只是命名为。gitignore。它会起作用的。

我也有同样的问题。 在.gitingore中定义的文件在运行git状态时被列为未跟踪文件。

这是因为.gitignore文件是用UTF-16LE编码保存的,而不是UTF8编码。

在将.gitignore文件的编码更改为UTF8之后,它就工作了。

有一些实例,例如应用程序配置文件,我想在git中跟踪(因此.gitignore将不起作用),但我需要更改本地设置。我不希望git管理这些文件或将其显示为修改。要做到这一点,我使用skip-worktree:

git update-index --skip-worktree path/to/file

您可以通过列出文件并检查以S开头的行是否被跳过来确认文件被跳过

git ls-files -v | grep ^S

如果将来你想让git再次在本地管理文件,只需运行:

 git update-index --no-skip-worktree path/to/file

上面的麦斯卡利托给出了一个很好的答案,引导我走上了正确的道路,但是

Git update-index——assume-unchanged file/to/ignore.php

与git有一个合同,其中:用户承诺不更改文件,并允许git假设工作树文件与索引中记录的文件匹配。

然而,我改变了文件的内容,所以在我的例子中——skip-worktree是更好的选择。

Toshiharu Nishina的网站提供了一个关于skip-worktree和假设不变的很好的解释:忽略已经在Git本地管理的文件

一个棘手的问题是,如果你执行类似echo node_modules >> .gitignore这样的操作,它将不起作用。windows终端在UCS-2 LE BOM中保存文件,git似乎不接受这一点。

您可以使用记事本打开文件,并使用UTF-8编码保存它

现在起作用了。

我认为他们需要修复这个,因为echo "filetoignore" >> .gitignore实际上似乎是一个方便的事情要做

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

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