Gitのignoreファイルは実は3つある、誰も教えてくれなかった

Two Git ignore files nobody told me about

多くの開発者は.gitignoreしか知らないが、gitは実は3か所からignoreパターンを読む。コミットされない.git/info/excludeは自分専用のスクラッチファイルを隠すのに最適で、グローバルな~/.config/git/ignoreはエディタやOSの雑多なファイルを全リポジトリから一掃できる。筆者はClaudeに教えられて初めてこの仕組みに気づき、長年放置していた未追跡ファイルの山をようやく片付けた。

The per-repo one, .git/info/exclude, is the one I'm giddy about. It lives inside .git, so it can't be committed even by accident, and nobody else ever sees it.
  1. ktm5j

    細かいツッコミですが、some/repo/path/.gitignore は必ずしもリポジトリにコミットされているわけではありません。たとえば、リポジトリに .gitignore ファイルがなければ、クローンに追加してもツリーには追加しない、ということが完全に可能です。もちろんその場合、コミットせずに `git add .` のようなことはできませんが。

    また、`~/.gitignore` はグローバルな gitignore として機能します。私はよく `katie*` のようなものをそこに入れて、`script.sh` を `katie_script.sh` にコピーして、コミットしたくない変更を加えられるようにしています。

    追記:`~/.gitignore` がそのまま動くかは確かではありません…どうやら私はそれを `~/.gitconfig` の excludesfile に設定していたようです。

  2. 6LLvveMx2koXfwn

    これは素晴らしいし、エージェントリポジトリなどの文脈でうまくまとめられていますが、おそらく誰も公式ドキュメントは読まないのでしょうね:https://git-scm.com/docs/gitignore には、ファイルを無視する複数の方法が明確に書かれているというのに?

  3. TrianguloY

    これはIntelliJを使っているときに学びました。両方のオプションを提案してくるからです。違いを調べて、一度理解すれば、その知識をどこでも使えるようになりました。

    もう一つの役立つアドバイスは、フォルダ全体を無視したい場合です。単一の「*」だけを含む .gitignore を置くと、フォルダ全体を無視できます…gitignoreファイル自体も含めて。

    私は .idea フォルダをさっと無視したいときにこれを使っています。

  4. teekert

    ああ、これはいいですね。私は /devtools を無視して、エージェント用の入力をそこに置く習慣がつきました。エージェントコンテナにマウントして、認証情報やメモリ、計画をそこに置かせています。それから「エージェントコンテナを起動する」スクリプトも。エージェントに関しては人それぞれ好みがありますからね。

  5. BigTTYGothGF

    > でも、自分のプライベートノート用に適当に付けたファイル名をリモートリポジトリにプッシュするのは、なんだか不潔な感じがする

    それ用のディレクトリを選んで、そのディレクトリを無視すればいいのです。自分のノートを残したい他のチームメンバーも、そのディレクトリを使えます。

この日のほかの記事

2026-09-23