.gitignore 并非 Git 忽略文件的唯一方式

Hacker News Top 工具

摘要

解释 Git 忽略文件的三个层级:每仓库已跟踪(.gitignore)、每仓库未跟踪(.git/info/exclude)和全局机器级(~/.config/git/ignore),以及如何检查哪个文件忽略了特定文件。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/18 14:49

# .gitignore 并非 Git 中忽略文件的唯一方式 来源:https://nelson.cloud/.gitignore-isnt-the-only-way-to-ignore-files-in-git/ 我使用 Git 已经很久了,但最近才发现,你可以在三个不同的层级忽略文件,而不仅仅是通过 `.gitignore`。这三种可用于忽略文件的文件分别是: - `.gitignore` - `.git/info/exclude` - `~/.config/git/ignore` `.gitignore` 是你编写希望忽略的文件的常规文件,它会随其余代码一同提交到 Git 中。你添加到该文件中的任何文件在执行 `git` 命令时都不会被纳入考虑。 ## .git/info/exclude(https://nelson.cloud/.gitignore-isnt-the-only-way-to-ignore-files-in-git/#gitinfoexclude) `exclude` 文件位于每一个 Git 仓库的 `.git` 目录中,但对其所做的更改不会提交到 Git。在新建的 Git 仓库中,它通常包含几行注释。此文件适用于在单个仓库基础上忽略某些内容。例如,某个仓库中可能存有一个个人 `notes.txt` 文件,你既不想将其提交到 Git,又不想将其添加到 `.gitignore` 中,因为它是你工作流程独有的内容。在这种情况下,你可以将 `notes.txt` 添加到 `.git/info/exclude` 中。 ## ~/.config/git/ignore(https://nelson.cloud/.gitignore-isnt-the-only-way-to-ignore-files-in-git/#configgitignore) `ignore` 文件位于你计算机的家目录 `~/.config/git/ignore` 下。添加到此文件中的文件名会在整个机器级别被全局忽略。此文件不会被提交到 Git,也不与任何特定仓库关联。它是添加那些你想在计算机上所有 Git 仓库中忽略的文件的理想位置。例如,如果你使用 macOS,将 `.DS_Store` 添加到这里会非常合适。 你可以将全局忽略文件自定义为其他文件。例如,如果你希望全局 Git 忽略文件为 `.gitignore_global`,请运行以下命令: Shell ``` git config --global core.excludesFile ~/.gitignore_global ``` 如果你想恢复默认设置,运行: Shell ``` git config --global --unset core.excludesFile ``` ## 检查哪个文件忽略了特定文件(https://nelson.cloud/.gitignore-isnt-the-only-way-to-ignore-files-in-git/#checking-which-file-is-ignoring-a-specific-file) 在向上述任何文件添加文件名时,你可以使用以下命令来检查某个文件名是如何被忽略的。例如,如果你想检查 `.DS_Store` 是如何被忽略的,在任何 Git 仓库中运行 `git check-ignore -v .DS_Store`。 以下是当仓库的 `.gitignore` 忽略了 `.DS_Store` 时的输出: Console ``` $ git check-ignore -v .DS_Store .gitignore:1:.DS_Store .DS_Store ``` 以下是当仓库的 `.git/info/exclude` 忽略了 `.DS_Store` 时的输出: Console ``` $ git check-ignore -v .DS_Store .git/info/exclude:7:.DS_Store .DS_Store ``` 以下是当全局的 `~/.config/git/ignore` 文件忽略了 `.DS_Store` 时的输出: Console ``` $ git check-ignore -v .DS_Store /Users/nelson/.config/git/ignore:2:.DS_Store .DS_Store ``` 以下是当自定义全局忽略文件 `.gitignore_global` 忽略了 `.DS_Store` 时的输出: Console ``` $ git check-ignore -v .DS_Store /Users/nelson/.gitignore_global:1:.DS_Store .DS_Store ``` 如果没有文件忽略某个文件,则 `git check-ignore -v` 命令不会产生任何输出。

相似文章

Git 由什么构成?(2022)

Lobsters Hottest

深入教程,解释 Git 的内部结构,包括对象、哈希以及 Git 如何存储数据,并提供 Go 和 shell 命令示例。

Git并不好

Lobsters Hottest

本文对Git进行了批评,认为它并不像人们通常认为的那样好,并链接到Lobste.rs上的讨论。

本地 Git 远程仓库

Hacker News Top

关于如何使用裸仓库为个人项目设置本地 Git 远程仓库的教程,支持离线友好的推/拉工作流。