我已经创建了文件.gitignore_global
并将其放在我的git安装目录中。当我运行命令时:
git config --global core.excludesfile ~/.gitignore
忽略文件中的规则不会应用于我的提交。
当我重命名文件.gitignore
并将其放入我的项目根目录时,规则确实适用。
这里有什么问题?
答案 0 :(得分:139)
也许你需要这样做:
git config --global core.excludesfile ~/.gitignore_global
喝点咖啡。
答案 1 :(得分:63)
以为我会参与其中。全局忽略文件似乎无法正常工作的另一个原因。这是我认为在早期答案中没有涉及到的内容。很明显 - 当然 - 很容易错过。
是的,git 只会忽略新文件。如果文件已被git跟踪,那么当然git不会忽略它!因此,任何gitignore
或exclude
文件中的模式都不适用。
这是有道理的。为什么git想忽略对已经跟踪的文件的修改?如果要忽略该文件,则必须先告诉git不要跟踪它,然后git忽略它,如手册中所述。有关如何解开文件的信息,请see this answer。
这一切都让我问,是否可以忽略对跟踪文件的更改?再次,git提供。这个答案; Git: Ignore tracked files为我们提供了命令(将file
替换为您要忽略的文件):
git update-index --assume-unchanged file
最后,这里有一些关于调试git ignore的其他信息。
用户希望Git在所有情况下忽略的模式(例如,由用户选择的编辑器生成的备份或临时文件)通常会进入用户〜/ .gitconfig中core.excludesfile指定的文件。其默认值为$ XDG_CONFIG_HOME / git / ignore。如果$ XDG_CONFIG_HOME未设置或为空,则使用$ HOME / .config / git / ignore。
所以,这是新的,取代之前提到的~/.gitignore_global
。
接下来,这非常有用,从1.8.2开始,我们现在有了一些出色的调试工具。看看:
Git Learns to Ignore Better - New in 1.8.2
这显示了如何使用新的check-ignore
标志来验证git是否成功忽略了您的模式,例如。
git check-ignore bin/a.dll --verbose
答案 2 :(得分:10)
我发现当我像这样定义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)
答案 3 :(得分:6)
注意:开始git1.7.12 (August 2012):
值:
- 当这些文件存在时,
core.attributesfile
默认为$ HOME / .config / git / attributes和core.excludesfile
分别默认为$HOME/.config/git/ignore
。
因此,如果您创建了$HOME/.config/git/attributes
文件,则甚至无需设置core.excludesfile
设置。
答案 4 :(得分:3)
该文件必须位于您的主目录中。在Windows上,它通常意味着: C:\ documents and settings \ [user]。
在linux上它是: /家庭/ [用户]
答案 5 :(得分:2)
我遇到了这个问题,因为我最初打电话给git config core.excludefiles'没有--global并且值不正确,因此它在本地存储了属性。看起来本地属性隐藏了全局属性(具有正确的值),完全忽略它。
答案 6 :(得分:1)
我遇到了同样的问题(在Windows上)。我最终检查了我的~/.gitconfig
文件,发现我的excludesfile
设置为:
excludesfile = C:\\Users\\myUserName\\Documents\\gitignore_global.txt
但应该是:
excludesfile = C:\\Users\\myUserName\\.gitignore_global
在我改变之后,一切都按原样运作。
答案 7 :(得分:1)
全局git忽略的另一个原因可能不起作用:路径中的不可见字符。
我发现将git-check-ignore中的警告消息粘贴到Chrome的地址栏中时,这是我的问题,幸运地可见
:(它在终端上不可见。这可能是一个长兔子的调试漏洞...)
答案 8 :(得分:0)
另一个难以追踪的原因.gitignore(_global)似乎不起作用可能是行中的前导空格。该文件不允许前导空格。因此,请确保您的文件的每一行都没有,除非它是空行。我花了一段时间才弄明白。
加我的两分钱。
答案 9 :(得分:0)
我最近犯了一个错误并运行以下命令
git config core.excludesfile tags
这改变了当前存储库中本地文件的excludesfile路径,并且此配置已写入.git/config
下的本地配置文件,因此为了解决这个问题,我刚刚打开了.git/config
文件并删除了该行excludesfile tags
,一切恢复正常。
答案 10 :(得分:0)
我对此文件的编码也很有趣。我的Windows 10(带有Powershell)以某种方式创建了编码为“ UTF-16 LE”的文件,而Git无法以某种方式处理此文件。当我将编码更改为更有意义的值时,它确实起作用了。
答案 11 :(得分:0)
添加 ppl 可能遗漏的另一件事,或者至少是我出错的地方。
我犯了没有复制粘贴命令的错误,我拼写了
excludefile
而不是
excludesfile
在我重新评估拼写之前,肯定输了半个小时左右,以为是别的东西。
您不会收到设置无效选项的警告或错误。如果语法无效,您确实会收到警告/错误消息,这就是为什么我错误地认为拼写错误会以同样的方式被发现。