我已经创建了文件.gitignore_global
并将其放在我的git install目录中。当我运行命令时:
git config --global core.excludesfile ~/.gitignore
忽略文件中的规则不会应用于我的提交。
当我重命名文件.gitignore
并将其放在我的项目根目录中时,规则确实适用。
怎么了
Answers:
也许您需要做:
git config --global core.excludesfile ~/.gitignore_global
还要喝咖啡。
gitignore
文件仅适用于未跟踪的文件,不适用于之前添加的文件
以为我会参与其中。全局忽略文件似乎不起作用还有另一个原因。我认为以前的答案没有涉及到这一点。如此令人眼花obvious乱的是-当然-很容易错过。
就是说git只会忽略新文件。如果该文件已经被git跟踪,那么git当然不会忽略它!因此,任何文件gitignore
或exclude
文件中的任何模式都不适用。
那讲得通。为什么git想要忽略对其已经跟踪的文件的修改?如果要忽略该文件,则必须首先告诉git不要跟踪它,然后按照手册中的描述git忽略它。有关如何取消跟踪文件的信息,请参见此答案。
这一切使我问,是否可以忽略对跟踪文件的更改?再次,git提供。这个答案;Git:忽略跟踪的文件会给我们命令(用file
您要忽略的文件代替):
git update-index --assume-unchanged file
最后,这是一些有关调试git ignore的其他信息。
该gitignore(5)手册告诉我们:
用户希望Git在所有情况下都忽略的模式(例如,由用户选择的编辑器生成的备份或临时文件)通常进入用户〜/ .gitconfig中由core.excludesfile指定的文件中。其默认值为$ XDG_CONFIG_HOME / git / ignore。如果$ XDG_CONFIG_HOME未设置或为空,则使用$ HOME / .config / git / ignore。
因此,这是新的并替代了前面~/.gitignore_global
提到的内容。
接下来,这确实有用,是从1.8.2版开始,我们现在有了一些出色的调试工具。看一下:
这显示了如何使用新check-ignore
标志来验证git是否成功忽略了您的模式,例如
git check-ignore bin/a.dll --verbose
git update-index --assume-unchanged file
正是我要的东西,谢谢!
我发现在定义global core.excludesfile
如下内容时:
git config --global core.excludesfile $HOME/.config/git/ignore
它没有用。将其更改为不使用$HOME
变量,如下所示:
git config --global core.excludesfile ~/.config/git/ignore
它立即开始工作。希望这对其他人有帮助。
仅供参考:
$ git --version
git version 1.7.10.2 (Apple Git-33)
注意:从git1.7.12(2012年8月)开始:
的价值:
core.attributesfile
默认为$ HOME / .config / git / attributes和core.excludesfile
$HOME/.config/git/ignore
这些文件存在时分别默认为 。
因此,如果您创建$HOME/.config/git/attributes
文件,则无需设置core.excludesfile
设置。
该文件必须位于您的主目录中。在Windows上,通常表示:C:\ documents and settings \ [user]。
在linux上是:/ home / [user]
我遇到了这个问题,因为我最初调用的是'git config core.excludefiles',它不带--global且值错误,因此将属性存储在本地。看起来局部属性隐藏了全局属性(具有正确的值),而完全忽略了它。
全局git忽略的另一个原因可能不起作用:路径中的不可见字符。
当我将git-check-ignore的警告消息粘贴到Chrome的地址栏中时,我才发现这是我的问题,幸运的是它在这里可见:
(在终端上不可见。这可能是一个漫长的调试漏洞……😅)
我对这个文件的编码也很有趣。我的Windows 10(带有Powershell)以某种方式创建了编码为“ UTF-16 LE”的文件,而Git无法以某种方式处理此文件。当我将编码更改为任何其他意义上更有意义的值时,它都起作用。