全局Git忽略


841

我想将Git设置为全局忽略某些文件。

我已将.gitignore文件添加到主目录(/Users/me/),并在其中添加了以下行:

*.tmproj

但这不是没有忽略这种类型的文件,你知道我在做什么错吗?


7
您可能还想查看GitHub的忽略建议-help.github.com/articles/ignoring-files ; 他们有一个常见的忽略模式存储库
drzaus

6
您可能还需要考虑在单个项目中使用.gitignore。否则,如果您(或其他人)在新系统上克隆项目,则还必须每次都重新创建全局excludes文件和配置。
Stan Kurdziel 2014年

25
项目创建的可忽略文件应位于项目.gitignore文件中,计算机上创建的可忽略文件应位于全局.gitignore文件中(例如editor / IDE temp文件等)。
Pylinux '16

2
Python虚拟环境目录是全局或本地excludes文件中条目的常见用例。

10
@Pylinux实际上,对于每个git-scm而言,个人IDE和工作流特定的东西都可以放入.git/info/exclude回购中的未跟踪文件中,因此不必一定要放入全局文件中。另外,默认的自动全局gitignore文件是$HOME/.config/git/ignore
Acumenus '16

Answers:


1420

您需要设置全局core.excludesfile配置文件以指向此全局忽略文件。

例如

* nix或Windows git bash:

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

Windows cmd:

git config --global core.excludesfile "%USERPROFILE%\.gitignore"

Windows PowerShell:

git config --global core.excludesfile "$Env:USERPROFILE\.gitignore"

对于Windows,将其设置为location C:\Users\{myusername}\.gitignore。您可以通过执行以下操作来验证配置值是否正确:

git config --global core.excludesfile

结果应该是您的用户个人资料的扩展路径.gitignore。确保该值不包含未扩展的%USERPROFILE%字符串。

重要提示:上面的命令将仅设置git将使用的忽略文件的位置。该文件仍必须在该位置手动创建,并用忽略列表填充。(从muruge的评论)

您可以在https://help.github.com/articles/ignoring-files/#create-a-global-gitignore中阅读有关命令的信息


2
只要它不在您HEAD或您的索引中,无论文件是否被跟踪都不会有任何区别。如果将的输出添加到问题中git status,可能会有所帮助git config core.excludesfile
CB Bailey

2
我可以#在行的开头使用~/.gitignore全局忽略文件中的注释吗?
Dror

9
官方的Git Windows工具包的最新版本改用* nix语法。如果此行不起作用,请改用* nix。
安迪·琼斯

9
我无法使用%USERPROFILE%变量使它正常工作。我必须使用* nix目录分隔符输入文件的完整路径。例如core.excludesfile C:/Users/User/.gitignore
Vince

21
无法与%USERPROFILE%变量配合使用。我必须在Windows中使用git config --global core.excludesfile'〜/ .gitignore'来将其设置为位置C:/ users / {myusername} /。gitignore。同样,以上命令将仅设置git将使用的忽略文件的位置。该文件仍必须在该位置手动创建,并用忽略列表填充。
muruge 2014年

301

在重新配置全局排除文件之前,您可能需要使用以下命令检查当前配置的文件:

git config --get core.excludesfile

就我而言,当我运行它时,我看到我的全局排除文件配置为

〜/ .gitignore_global
而且那里已经列出了几件事。因此,对于给定的问题,首先检查现有的排除文件,然后向其添加新的文件掩码可能是有意义的。


2
这很好。像往常一样设置全局gitignore文件;每行一个条目。
Maarten Hartman

237

尽管其他答案是正确的,但它们正在设置全局配置值,而全局git忽略文件存在默认的git位置:

* nix:

~/.config/git/ignore

视窗:

%USERPROFILE%\git\ignore

您可能需要创建git目录和ignore文件,但随后可以将全局忽略项放到该文件中,就是这样!

资源

放置模式的文件取决于模式的使用方式。

  • 用户希望Git在所有情况下都忽略的模式(例如,由用户选择的编辑器生成的备份或临时文件)通常进入core.excludesFile用户所指定的文件中~/.gitconfig。其默认值为$ XDG_CONFIG_HOME / git / ignore。如果$ XDG_CONFIG_HOME未设置或为空,则使用$ HOME / .config / git / ignore。

1
这很棒; 我对此一无所知...但这不是生成的文件吗?更新/重新安装时可以覆盖它吗?
danielsdesk

1
我相信该文件是通过运行某些git命令来创建/修改的。由于它是每个用户目录中的设置文件,因此我认为不应将其覆盖。
史蒂夫·乔根森

1
我同意这应该是公认的答案,但是我没有找到这-THE文档说明文章(help.github.com/articles/ignoring-files
AVProgrammer

1
@AVProgrammer我刚刚编辑了答案,以反映源文档组织方式的变化。
史蒂夫·乔根森

7
看起来在Windows上,路径也是~/.config/git/ignore
suriv

40

从头开始创建全局gitignore:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. 第一行将目录更改为 C:/Users/User
  2. 之后,您创建一个带有.gitignore_global扩展名的空文件
  3. 最后将全局忽略设置为该文件。
  4. 然后,您应该使用某种记事本打开它,并添加所需的忽略规则。

18

这里

如果您在仓库中创建一个名为.gitignore的文件,则git在查看要提交的文件时会使用其规则。请注意,在将规则添加到该文件之前,git不会忽略该文件已被跟踪以忽略它。在这种情况下,通常必须使用以下命令取消跟踪文件:

git rm --cached filename

是你的情况吗?


我试图在全球范围内忽略,这没有发生!!
轻度毛绒

在Linux上,@ MildFuzz对core.excludesfile文件的解释似乎与对文件的解释不同.gitignore。如果您想忽略整个目录,只需输入目录名称,.vscode/而不是.vscode/*
Aspiring Dev

11

如果使用Unix系统,则可以通过两个命令解决问题。其中第一个初始化配置,第二个用一个要忽略的文件更改文件。

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore

10
  1. 在您的主目录中创建一个.gitignore文件
touch ~/.gitignore
  1. 向其中添加文件(无法识别文件夹

# these work
*.gz
*.tmproj
*.7z

# these won't as they are folders
.vscode/
build/

# but you can do this
.vscode/*
build/*
  1. 检查git是否已经具有全局gitignore
git config --get core.excludesfile
  1. 告诉git文件在哪里
git config --global core.excludesfile '~/.gitignore'

瞧!


“文件夹不被识别”-就是这样,文件夹工作正常……
TobiX

7

记住,运行命令

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

只会设置全局文件,但不会创建它。对于Windows,请检查您的Users目录中的.gitconfig文件,然后将其编辑为您的首选项。就我而言:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore

3

我能忽略.tmproj通过包括文件.tmproj*.tmproj在我的/users/me/.gitignore-global文件。

请注意,文件名.gitignore-global不是.gitignore。通过包含目录中的文件.tmproj*.tmproj在目录中调用的文件.gitignore中,该文件不起作用/users/me


4
只要您的全局匹配文件与您的core.excludesfile配置相匹配,什么都没关系。
CB Bailey

啊! 好点@CharlesBailey。但是,这可能是作者可能要检查的东西。.tmproj无法忽略文件的原因可能是因为用户的excludesfile不是.gitignore
斯里·桑卡兰

我想他认为用户会足够聪明以实现。
WORMSS 2014年

2

您应该为此创建一个排除文件。看看这个要点,这很容易解释。

为了解决你的问题,虽然,你可能需要或者去索引.tmproj文件(如果你已经将其添加到索引)与git rm --cached path/to/.tmproj,或git addcommit你的.gitignore文件。


我试图做到这一点全球,而不仅仅是每回购
轻度发子

是的,这就是我的要旨。我对最初的问题有些困惑。你做了git rm --cached吗?
Nic

是的,尝试过 在我看来,我已遵循所有推荐的建议!我想念什么?
轻度毛绒

如建议的那样,我将添加您的git状态,并将信息排除在问题之外:)
Nic

2

在用于Linux的Windows子系统上,我必须先导航到子系统根目录,cd ~/然后touch .gitignore在那里更新全局gitignore配置。

希望对您有所帮助。


0

如果您使用的是VSCODE,则可以获取此扩展名来为您处理任务。每次保存工作时,它都会监视您的工作空间,并帮助您自动忽略在vscode设置中指定的文件和文件夹。json ignoreit(vscode扩展名)

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.