Git Global忽略不起作用


83

我已经创建了文件.gitignore_global并将其放在我的git install目录中。当我运行命令时:

git config --global core.excludesfile ~/.gitignore

忽略文件中的规则不会应用于我的提交。

当我重命名文件.gitignore并将其放在我的项目根目录中时,规则确实适用。

怎么了


@Jarrod`〜/ .gitignore_global`是OP的意思,只是帖子中的错字,尽管他接受了我的回答,所以您的编辑不好
CharlesB 2012年

Answers:


167

也许您需要做:

git config --global core.excludesfile ~/.gitignore_global 

还要喝咖啡。


对不起,我就是这个意思。我复制的那张纸只是在弄乱,看看有什么用。
user880954 2011年

真正的咖啡和牙齿。您确定.gitignore_global在$ HOME中吗?您说您将其安装在git install目录中?
CharlesB 2011年

知道为什么它在这里仍然无法使用吗?我有一个要跳过的.7z文件;我添加了以下规则:gist.github.com/octocat/9257657 ; 在我更改文件后,它仍然在.git上进行版本控制:(
Aquarius Power

2
是的,gitignore文件仅适用于未跟踪的文件,不适用于之前添加的文件
CharlesB 2014年

1
我刚刚注意到的另一件事是.gitignore_global文件中的行模式必须与项目主目录的路径完全匹配。例如,如果项目名称为myProject,它在myProject / sql / init中生成SQL代码,而您想忽略myProject / sql / init / *。sql,则该条目必须为* / sql / init /。同样,对于myProject / msg / dao /和myProject / dao中生成的DAO / DTO代码,必须有两个条目来捕获dao子目录中的所有文件-必须添加* / * / dao /和* / dao /。
基思·基布尔

80

以为我会参与其中。全局忽略文件似乎不起作用还有另一个原因。我认为以前的答案没有涉及到这一点。如此令人眼花obvious乱的是-当然-很容易错过。

就是说git只会忽略新文件。如果该文件已经被git跟踪,那么git当然不会忽略它!因此,任何文件gitignoreexclude文件中的任何模式都不适用

那讲得通。为什么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版开始,我们现在有了一些出色的调试工具。看一下:

Git学习更好地忽略-1.8.2中的新增功能

这显示了如何使用新check-ignore标志来验证git是否成功忽略了您的模式,例如

git check-ignore bin/a.dll --verbose


7
git update-index --assume-unchanged file正是我要的东西,谢谢!
Jai

14

我发现在定义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)

我也观察到了这一点。我浏览了文档,但没有找到任何东西:除了.gitignore(按目录)和.git / info / exclude之外,git还在该文件中查找不需要跟踪的文件模式。“〜/”扩展为$ HOME的值,“〜user /”扩展为指定用户的主目录。
rliu 2014年

9

注意:从git1.7.12(2012年8月)开始

的价值:

  • core.attributesfile 默认为$ HOME / .config / git / attributes和
  • core.excludesfile$HOME/.config/git/ignore这些文件存在时分别默认为 。

因此,如果您创建$HOME/.config/git/attributes文件,则无需设置core.excludesfile设置。



2

我遇到了这个问题,因为我最初调用的是'git config core.excludefiles',它不带--global且值错误,因此将属性存储在本地。看起来局部属性隐藏了全局属性(具有正确的值),而完全忽略了它。


2

全局git忽略的另一个原因可能不起作用:路径中的不可见字符。

当我将git-check-ignore的警告消息粘贴到Chrome的地址栏中时,我才发现这是我的问题,幸运的是它在这里可见:

在此处输入图片说明

(在终端上不可见。这可能是一个漫长的调试漏洞……😅)


1

我在Windows上遇到了同样的问题。我最终检查了我的~/.gitconfig文件,发现我的文件excludesfile设置为:

excludesfile = C:\\Users\\myUserName\\Documents\\gitignore_global.txt

但应该是:

excludesfile = C:\\Users\\myUserName\\.gitignore_global

更改后,一切正常。


1

我对这个文件的编码也很有趣。我的Windows 10(带有Powershell)以某种方式创建了编码为“ UTF-16 LE”的文件,而Git无法以某种方式处理此文件。当我将编码更改为任何其他意义上更有意义的值时,它都起作用。


0

.gitignore(_global)似乎不起作用的另一个难以追踪的原因可能是行中的空格。该文件不容许前导空格。因此,请确保文件的每一行都没有空白,除非它是空白行。我花了一段时间才弄清楚。

只需加上我的两分钱。


0

我最近犯了一个错误,并运行以下命令,git config core.excludesfile tags 此命令 将excludesfile路径更改为当前存储库中的本地文件,并且此配置已写入到的本地配置文件中.git/config,因此要解决的问题是我刚刚打开.git/config文件并删除了该行excludesfile tags一切恢复正常。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.