Git 里还有两个没人提的 ignore 文件

Two Git ignore files nobody told me about

我有个坏习惯:在仓库里留着未追踪的文件,比如临时笔记和 agent plans。以前我只知道用 .gitignore,但它会被提交,不适合放私人文件。直到 Claude 提醒我,原来 Git 还有 .git/info/exclude 和全局 exclude 文件。前者只影响当前克隆,后者影响本机所有仓库,且都不会被提交。这样既能保持工作区干净,又不用把私人文件暴露给团队。现在我终于能安心地忽略那些临时文件了。

直到最近,我以为在 Git 中忽略文件的唯一方法就是把它加到 .gitignore 里,而 .gitignore 会被提交。
  1. ktm5j

    只是个小细节,但 some/repo/path/.gitignore 并不一定被提交到了仓库里。例如,如果你的仓库里没有 .gitignore 文件,你完全可以在你的克隆版本中添加一个,而无需将其加入树中。当然,这样一来你就不能在不提交的情况下执行 `git add .` 之类的操作了。

    另外,`~/.gitignore` 可以作为全局 gitignore 使用。我通常会在里面放一些类似 `katie*` 的规则,这样我就可以把 `script.sh` 复制成 `katie_script.sh`,然后进行一些不想提交的修改。

    快速更正:我不确定 `~/.gitignore` 是否开箱即用……看起来我是把它写在了 `~/.gitconfig` 的 excludesfile 配置里。

  2. 6LLvveMx2koXfwn

    这很棒,而且结合代理型仓库(agentic repos)等背景写得很好,但想必没人去读官方文档吧:https://git-scm.com/docs/gitignore,里面清晰地说明了多种忽略文件的方式?

  3. BigTTYGothGF

    > 但把我给自己私人笔记随便起的傻文件名推送到远程仓库,感觉不太干净

    那就专门建个目录放这些笔记,然后忽略整个目录。其他想保留自己笔记的团队成员也可以共用这个目录。

  4. TrianguloY

    我是在用 IntelliJ 时学到这一点的,因为它会同时提示这两种选项。我查了一下两者的区别,弄懂之后就能到处应用这个知识了。

    另一个有用的建议是:当你想忽略整个文件夹时,在该文件夹里放一个只包含单个 `*` 的 .gitignore 文件,就能忽略整个文件夹……包括 .gitignore 文件本身。

    我确实会在需要快速忽略 .idea 文件夹时使用这个方法。

  5. teekert

    哦,这个不错。我已经养成了忽略 /devtools 目录的习惯,并把所有给代理的输入都放在那里。我在代理容器里挂载这个目录,让代理把它的认证信息、记忆和计划都存进去。我还写了一个“启动代理容器”的脚本,因为大家对代理的使用偏好各不相同。

同日更多故事

2026-09-23