全局Git忽略

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

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

*.tmproj

但它不是忽略这种类型的文件,任何想法我做错了什么?

488881 次浏览

这里

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

git rm --cached filename

是你的案子吗?

您应该为此创建一个排除文件。查看这一要点,它非常不言自明。

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

您需要设置全局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,它被设置为位置C:\Users\%username%\.gitignore。您可以通过执行以下操作来验证配置值是否正确:

git config --global core.excludesFile

结果应该是用户配置文件.gitignore的扩展路径。确保该值不包含未扩展的%USERPROFILE%字符串。

重要:上述命令只会设置git将使用的忽略文件的位置。该文件仍然必须在该位置手动创建并填充忽略列表。(来自Muruge的评论)

您可以在https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files#configuring-ignored-files-for-all-repositories-on-your-computer中阅读有关命令的信息

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

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

在重新配置全局排除文件之前,您可能希望使用以下命令检查它当前配置为什么:

git config --get core.excludesfile

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

~/.gitignore_global
,并且那里已经列出了一些东西。因此,在给定问题的情况下,首先检查现有的排除文件并向其添加新文件掩码可能是有意义的。

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

*nix:

~/.config/git/ignore

windows:

%USERPROFILE%\.config\git\ignore

您可能需要创建git目录和ignore文件,但您可以将全局忽略放入该文件中,仅此而已!

来源

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

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

记住,运行命令

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

将只设置全局文件,但不会创建它。对于Windows,请检查您的用户目录中的.gitconfig文件,并将其编辑为您的首选项。在我的情况下,它是这样的:

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

要从头开始创建全局gitignore:

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

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

我希望它能帮助某人。

  1. 在主目录中创建一个. gitignore文件
touch ~/.gitignore
  1. 向其添加文件/文件夹

示例

# Files*.gz*.tmproj*.7z
# Folders.vscode/build/
# If folders don't work, you can still do this.vscode/*build/*
  1. 检查一个git是否已经有一个全局gitignore
git config --get core.excludesfile
  1. 告诉git文件在哪里
git config --global core.excludesfile '~/.gitignore'

瞧!!

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

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

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

如果.gitignore方法不适合您,另一种可能的解决方案是:

git update-index --skip-worktree path_to_file

这将忽略对该文件的更改,包括本地和上游,直到您决定再次允许它们:

git update-index --no-skip-worktree path_to_file

您可以获取标记为跳过的文件列表:

git ls-files -v . | grep ^S

请注意,与--skip-worktree不同,一旦拉取上游更改,--assume-unchanged状态将丢失。