我已经创建了名为 .gitignore_global
的文件,并将其放在我的 git 安装目录中。当我运行命令:
git config --global core.excludesfile ~/.gitignore
我提交的代码中忽略文件中的规则没有生效。
当我将 .gitignore
文件重命名并放置在项目根目录下时,规则开始生效。
这里出了什么问题?
我已经创建了名为 .gitignore_global
的文件,并将其放在我的 git 安装目录中。当我运行命令:
git config --global core.excludesfile ~/.gitignore
我提交的代码中忽略文件中的规则没有生效。
当我将 .gitignore
文件重命名并放置在项目根目录下时,规则开始生效。
这里出了什么问题?
git config --global core.excludesFile ~/.gitignore_global
.gitignore
文件仅适用于未跟踪的文件,对于那些已经添加的文件则不起作用。 - CharlesBgit config --global core.excludesfile
命令,查看打印出的文件,然后去编辑那个文件,这种方式对我很有效。我猜第二个文件是你想要追加忽略的文件。 - Wei Lin我想在这方面提供一些帮助。出现全局忽略文件无法起作用的另一个原因是有一些之前的答案没有涵盖到的情况。这个情况非常明显,以至于很容易被忽略。
这个情况就是,Git只会忽略新添加的文件。如果该文件已被Git追踪,那么Git自然不会忽略它!所以任何.gitignore
或.git/info/exclude
文件中的模式并不适用。
这是有道理的。Git为什么要忽略已经被追踪的文件的修改呢?如果要忽略该文件,则必须首先告诉Git不要跟踪它,然后按照手册中的说明进行忽略。关于如何取消跟踪文件的信息,请参见此答案。
这让我想问,是否可能忽略已跟踪文件的更改?再次,Git提供了解决方案。这篇回答;Git:忽略已跟踪文件给出了命令(将file
替换为要忽略的文件):
git update-index --assume-unchanged file
最后,这里还有一些关于调试Git忽略的附加信息。
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 check-ignore .
命令,但是它提示无法访问 ''C:\Users....gitignore''。然后我意识到需要去掉单引号,于是通过编辑 ~.gitconfig 文件将其删除。 - Mithil Poojarygit stash
操作,那么被保存的文件也会被隐藏。当你执行git stash pop
时,这些文件不会被恢复。因此,你实际上失去了更改,并且必须再次修改这些文件。 - 15 Volts我发现当我像这样定义 global core.excludesfile
时:
git config --global core.excludesfile $HOME/.config/git/ignore
它没有起作用。将其更改为不使用$HOME
变量,像这样:
git config --global core.excludesfile ~/.config/git/ignore
它立即开始工作。希望这能帮助其他人。
FYI:
$ git --version
git version 1.7.10.2 (Apple Git-33)
当这些文件存在时:
core.attributesfile
的值默认为$HOME/.config/git/attributes,core.excludesfile
的值默认为$HOME/.config/git/ignore。
因此,如果您创建了一个$HOME/.config/git/attributes文件,则甚至不需要设置core.excludesfile
设置。
git config core.excludesfile .gitignore
命令。后来不得不进入 .git/config
文件并删除 [core]/excludesfile 行才能使其再次正常工作。 - Yuri Ghensev我还遇到了一个与文件编码有关的有趣问题。不知何故,我的Windows 10(使用PowerShell)使用“UTF-16 LE”编码创建了该文件,但Git无法处理它。当我将编码更改为其他任何更合理的值时,它就可以正常工作了。
补充一点可能被人们忽略的事情,或者至少是我犯的错误。
我没有复制粘贴命令,并且拼错了
excludefile
(错误)
而应该是
excludesfile
(正确)
在重新检查拼写之前,我已经失去了大约半个小时左右的时间,认为它是其他问题。
如果设置了无效选项,则不会收到警告或错误。如果语法无效,您将收到警告/错误消息,这就是为什么我错误地认为拼写错误会以相同的方式被捕获。
~/.gitconfig
文件,发现我的excludesfile
被设置为:excludesfile = C:\\Users\\myUserName\\Documents\\gitignore_global.txt
(以下省略)
excludesfile = C:\\Users\\myUserName\\.gitignore_global
我修改后,一切都按照预期运行了。
~/.gitignore_global
,而帖子中只是一个打字错误。尽管他已经接受了我的回答,但你的编辑并不正确。 - CharlesBcore.excludesfile
而不是小写字母F的core.excludesFile
。希望这能帮助任何遇到类似情况的新手。 - Bibek Aryal