世界を動かす技術を、日本語で。

.gitignoreだけがGitでファイルを無視する方法ではない

2026年6月18日原文(nelson.cloud)

概要

  • Git では、無視するファイルを3つのレベルで設定可能
  • .gitignore.git/info/exclude~/.config/git/ignore の3種類のファイルを利用
  • 各ファイルごとに用途やスコープが異なる
  • グローバルな無視ファイルは カスタマイズ 可能
  • git check-ignore -v コマンドで無視の状態を確認

Gitでファイルを無視する3つの方法

  • .gitignore

    • プロジェクトルートに配置する標準的な無視ファイル
    • リポジトリに コミット され、他の開発者と共有
    • 追加したファイルやパターンは 全員に適用
  • .git/info/exclude

    • 各リポジトリの .gitディレクトリ 内に存在
    • Git管理外 のため、他の開発者と共有されない
    • 個人の作業用ファイルや一時ファイルの無視に最適
  • ~/.config/git/ignore

    • ユーザーのホームディレクトリ配下に存在
    • 全リポジトリ共通 で適用されるグローバルな無視ファイル
    • 例:macOSの .DS_Store など、全体で無視したいファイルに便利

グローバル無視ファイルのカスタマイズ

  • デフォルト以外のファイルをグローバル無視ファイルに設定可能
    • 設定コマンド例:
      • git config --global core.excludesFile ~/.gitignore_global
    • 元に戻す場合:
      • git config --global --unset core.excludesFile

どのファイルで無視されているか確認する方法

  • git check-ignore -v [ファイル名] コマンドで確認可能
    • 例:.DS_Storeがどの設定で無視されているか表示
    • 出力には、無視している ファイル名・行番号・パターン が表示
    • どのファイルでも無視されていない場合は 出力なし

具体例

  • .gitignore で無視されている場合の出力例
    • .gitignore:1:.DS_Store .DS_Store
  • .git/info/exclude で無視されている場合の出力例
    • .git/info/exclude:7:.DS_Store .DS_Store
  • ~/.config/git/ignore で無視されている場合の出力例
    • /Users/nelson/.config/git/ignore:2:.DS_Store .DS_Store
  • カスタムグローバルファイル で無視されている場合の出力例
    • /Users/nelson/.gitignore_global:1:.DS_Store .DS_Store

まとめ

  • 用途や共有範囲 に応じて、適切な無視ファイルを選択
  • 個人・プロジェクト・全体 で柔軟に使い分けることが重要
  • git check-ignore -v でトラブルシューティングが容易

Hackerたちの意見

これはただの手抜きの再利用だね。 https://git-scm.com/docs/gitignore

ちょっと待ってよ、'check-ignore'が追加されたんだから、これはいいアドバイスだよ。

あなたのおかげでいい日になったよ。そこにすべてが書いてあって説明もされてる。確かに、もう少し生き生きとした視覚的なスタイルがあれば助かるけど、個々の概念についてはやっぱりGoogleが頼りだね。あそこは最高のリソースの一つだよ。gitは本当に素晴らしいツールだ。見た目はシンプルだけど、複雑じゃなくて、すごく多才なんだ。

そのリンクをHacker Newsに投稿してみて、どこまで行くか見てみて!

.git/info/excludeをめちゃくちゃ使ってるよ。ローカルでだけ使いたいスクリプトやMakefileにぴったりだし、コラボレーターも気にしないし使えないからね。

他のコラボレーターが使えないスクリプトの例が知りたい?PRワークフロー用のスクリプトみたいな?

かなり前から、git statusで表示される未追跡ファイルをすべて取り込んで、.git/info/excludeに追加するシェル関数を使ってるよ。一般的には、リポジトリに追加したいものをすべてadd+commitした後に適用してる。

~/.config/git/ignoreと~/.config/git/configが、グローバルなgit設定と無視リストの正しい場所だよ。~/.gitignore_globalを作って設定を変えるよりもね。個人的には、dotfilesがルートレベルでかなり小さくなって、~/.config/を活用してる。git excludeはあまり使われないけど、リポジトリにコミットされないから、使いたいときに毎回再作成しなきゃいけないんだ。それが悪いわけじゃないけど、使われない理由だね。

ボーナスとして、~/.config ディレクトリをバージョン管理することで、将来の修正や共有ができるようになりますよ。

これどこで覚えたのかわからないけど、グローバルGitの無視リストにこれを追加したよ:attic。これで、どのプロジェクトでもランダムなものを置いておけるatticディレクトリを作れるんだ。実際にそんなディレクトリチェックがあるリポジトリはまだ見つけてないけど。

私もこれやってるよ!でも、私はそれを.localって呼んでる。

私のはauxで、.gitignoreを入れて隠してるよ。中にはアスタリスク(*)だけを入れて、他には何も入れないようにしてる。そうすれば、自分自身と中にあるものを無視してくれるんだ。

Hacker Newsで議論の続きを見る