调试 Git 忽略
最后更新于 作者: Paul Redmond
有时,您可能会创建一个意外被 git 忽略的文件。虽然这种情况并不常见,但找出哪个 `.gitignore` 文件负责忽略项目中的文件可能很棘手。一旦您了解了一个方便的 git 命令,它就变得超级容易了!
对于性急的人,找出 git 忽略文件的原因的 TLDR
git check-ignore -v path/to/ignored/file
关键是使用 `-v` 标志,以便能够看到导致 git 忽略文件的忽略文件的路径和行号。
示例 Git 忽略
让我们快速了解一下场景,然后介绍一个方便的 git 命令,您可以使用它来调试哪个 .gitignore 文件正在忽略文件夹/文件/等。
当罪魁祸首是项目中的 `.gitignore` 文件时,找出为什么忽略文件的原因比较简单,但是,如果您在 `~/.gitconfig` 中配置了全局排除文件,那么调试起来可能会有点棘手,并且可能会让您在一分钟内抓破头皮,想知道为什么您没有看到新的未跟踪文件。
以下是您在 `~/.gitconfig` 中配置全局忽略文件的示例。我喜欢为我想要在所有项目中忽略的文件管理此文件,但这些文件不一定是项目 `.gitignore` 文件的必需项。
[core] excludesfile = ~/.gitignore# ...
我最近在尝试在一个专门的片段存储库中创建一堆 Sublime 文本片段时遇到了这个问题。我的全局忽略文件有这一行
*.sublime-*
我使用此忽略规则来忽略所有存储库中的 `*.sublime-project` 文件,无意中也包含以 `*.sublime-snippet` 结尾的文件。
如果您想试一试,将上述规则添加到您的全局 .gitignore 文件中,然后尝试在一个 git 项目中创建一个 `*.sublime-snippet` 文件。您应该会看到创建的文件不像未跟踪文件那样显示。
touch test.sublime-snippetgit status# On branch master# nothing to commit, working tree clean
接下来,运行以下命令以使用 `-v` 标志确定为什么忽略文件。
git check-ignore -v test.sublime-snippet/Users/paul/.gitignore:5:*.sublime-* test.sublime-snippet
如您所见,`check-ignore` 命令输出我的全局忽略文件和行号。
虽然 `check-ignore` 命令一旦您知道它就很容易理解,但学习它来快速排查不应该被忽略的忽略文件很有用。