全局Git无视

Global Git ignore

我想设置git以全局忽略某些文件。

我已将一个.gitignore文件添加到我的用户根目录(Users/me/中),并向其中添加了以下行:

1
*.tmproj

但它并没有忽略这类文件,知道我做错了什么吗?


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

例如

*nix或windows git bash:

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

Windows CMD:

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

对于Windows,它设置为位置c:/users/myusername/.gitignore。上面的命令将只设置git将使用的忽略文件的位置。该文件仍需在该位置手动创建,并用忽略列表填充。

您可以在https://help.github.com/articles/ignoring files/create-a-global-gitignore上阅读该命令。


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

1
git config --get core.excludesfile

在我的例子中,当我运行它时,我看到我的全局排除文件被配置为

1
~/.gitignore_global

,其中已经列出了一些东西。因此,在给定问题的情况下,首先检查现有的excludes文件,并向其中添加新的文件掩码可能是有意义的。


虽然其他答案是正确的,但它们正在设置全局配置值,而全局git忽略文件有一个默认的git位置:

*NIX:

1
~/.config/git/ignore

窗户:

1
%USERPROFILE%\git\ignore

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

来源

Which file to place a pattern in depends on how the pattern is meant to be used.

  • Patterns which a user wants Git to ignore in all situations (e.g., backup or temporary files generated by the user’s editor of choice) generally go into a file specified by core.excludesFile in the user’s ~/.gitconfig. Its default value is $XDG_CONFIG_HOME/git/ignore. If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/ignore is used instead.


要从头创建全局gitignore,请执行以下操作:

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

  • 从这里开始。

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

    1
    git rm --cached filename

    是你的案子吗?


    记住运行命令

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

    将只设置全局文件,但不会创建它。对于Windows,请检查用户目录中的.gitconfig文件,并根据您的喜好对其进行编辑。在我的例子中是这样的:

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


    我可以忽略.tmproj文件,将.tmproj*.tmproj包含在我的/users/me/.gitignore-global文件中。

    注意,文件名是.gitignore-global而不是.gitignore。它没有通过将.tmproj*.tmproj包含在/users/me目录中名为.gitignore的文件中来工作。


    您应该为此创建一个排除文件。看看这个要点,这是相当不言自明的。

    不过,为了解决您的问题,您可能需要使用git rm --cached path/to/.tmproj取消.tmproj文件的索引(如果您已经将其添加到索引中),或者使用git addcommit取消.gitignore文件的索引。


  • 在主目录中创建.gitignore文件
  • 1
    touch ~/.gitignore
  • 向其中添加文件(无法识别文件夹)
  • 例子

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # these work
    *.gz
    *.tmproj
    *.7z

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

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

    哇!!


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

    我希望它能帮助别人。