Gitのignoreパターンは`.gitignore`だけに基づくわけではありません。Mihai Dinculescu氏の2026年9月23日付の記事によれば、Gitは同じパターン構文を用いて、リポジトリ内の`.gitignore`ファイル、現在のクローン専用の`.git/info/exclude`、そして`core.excludesFile`で設定するグローバルなexcludesファイルの3か所からパターンを読み取ります。

実用的な違いは適用範囲です。`.gitignore`の項目はバージョン管理されるため、リポジトリをクローンしたほかの人にも届き、共有すべきビルド成果物や標準的なローカル環境用ディレクトリに適しています。`.git/info/exclude`は1つのクローンにだけ影響し、Gitの内部メタデータ内にあるため、誤ってコミットされることもありません。グローバルファイルは1台のマシン上の複数リポジトリに適用され、プロジェクトの方針にしたくないエディターやオペレーティングシステムの雑多なファイルを無視するのに役立ちます。

この違いは、プライベートなメモ、エージェントの計画、一時スクリプトなど、ローカルでは有用だが共同作業者には関係しないファイルにとって重要です。Dinculescu氏はこうしたファイルに`.git/info/exclude`を使い、`echo 'plans/' >> .git/info/exclude`のようなコマンドも紹介しています。Gitは`$XDG_CONFIG_HOME/git/ignore`または`~/.config/git/ignore`もグローバルファイルとして利用できます。別の場所を使いたい場合は、`git config --global core.excludesFile`で指定できます。

ignoreルールには重要な限界があります。すでに追跡されているファイルが変更一覧に表示されるのを防ぐことはできません。ignoreパターンで通常のstatus出力から除外するには、まずGitの追跡対象からファイルを削除する必要があります。したがって、除外設定は作業領域を整理するための仕組みであり、秘密情報の管理、アクセス制御、コミット前の慎重な確認を代替するものではありません。

リンクされたワークツリーには、もう1つ注意点があります。リンクされたワークツリーでは、`.git`が`info/exclude`を含むディレクトリではなく、メインリポジトリを指すファイルになっている場合があります。Dinculescu氏は、`git rev-parse --git-common-dir`で共有Gitディレクトリを特定し、そのディレクトリ内の`info/exclude`ファイルに追記することを勧めています。その結果として使うexcludeファイルは、そのリポジトリに関連するリンク済みワークツリー全体をカバーします。

提供されたGitHubとStack OverflowのプロフィールはDinculescu氏本人を特定するものですが、上記のGitの挙動を独立して検証するものではありません。技術的な説明は、一次資料である元の記事に基づいています。元の記事はClaude Codeのファイル選択設定にも触れていますが、提供資料にはその設定名の大文字小文字の食い違いを確認できる参照設定ドキュメントが含まれていません。ただしGit自体については、中心的な運用上の教訓は明確です。ignoreファイルは意図した利用者に合わせて選び、追跡済みファイルを`git status`に表示されなくなるだけで、追跡済みファイルが実際にバージョン管理されているかという事実は変わらないという点です。