
2026/06/18 19:29
.gitignore が Git のファイルを無視する唯一の方法ではないとは限りません
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Git は、不要なシステムファイルをコミットせずにリポジトリをクリーンに保つため、無視対象のファイルエントリを 3 つの異なるレベルで管理します。これらの設定場所は以下の通りです:
.gitignore(プロジェクト固有でバージョン制御にコミットされる)、.git/info/exclude(リポジトリ固有だがバージョン制御にはコミットされない)、およびグローバル無視ファイル(~/.config/git/ignore、マシン全体で適用され、決してアップロードされない)。macOS 上では、システムキャッシュファイルが新しいプロジェクトを混濁させないようにするため、.DS_Store をグローバルリストに追加することが重要です。ユーザーは git config --global core.excludesFile でグローバル無視ファイルの場所をカスタマイズし、デフォルトに戻すには git config --global --unset core.excludesFile を実行します。特定のファイル名がどのルールで無視されているかを確認するには、git check-ignore -v <filename> を使用してください。このコマンドは、一致が .gitignore、.git/info/exclude、またはグローバル無視ファイル(パス指定またはカスタム場所による)から来ているかを報告します。本文
Git におけるファイル無視の 3 つの設定レベルと確認方法
長年 Git を使用してきたにもかかわらず、「.gitignore」だけでなく、ファイル無視の設定が実際には3 つの異なるレベルで行えることを知っておくべきです。以下の 3 つの設定ファイルを理解し適切に使い分けてください。
.gitignore.git/info/exclude~/.config/git/ignore
1. .gitignore(リポジトリ固有)
通常使用される設定ファイルで、特定の Git リポジトリに対して無視するファイルを指定します。
- 特徴: コードと一緒にリポジトリに追加(チェックイン)されます。
- 作用範囲: そのリポジトリ内で有効です。
- 注意点: ここに記載されたファイルは、
コマンドの処理対象から除外されます。git
2. .git/info/exclude(リポジトリ固有・チェックイン不可)
すべての Git リポジトリに存在する
.git ディレクトリ内のファイルです。
- 特徴: 変更内容はGit にチェックインされません。新規リポジトリには通常、コメント行のみが記述されています。
- 作用範囲: そのリポジトリ内で有効ですが、他のコピーとは共有されません。
- 使用ケース:
- リポジトリ固有で特定のアイテムを無視したい場合(例:
に加えたくないが Git には入れたくない.gitignore
など)。notes.txt
- リポジトリ固有で特定のアイテムを無視したい場合(例:
3. ~/.config/git/ignore(グローバル)
ユーザーのホームディレクトリにある設定ファイルです。
- パス:
~/.config/git/ignore - 特徴: ここに記載されたファイルは、マシン全体でグローバルに無視されます。
- Git にチェックインされません。
- 特定のリポジトリとは関連付けられません。
- 使用ケース: コンピュータ上のすべての Git リポジトリで無視したいファイルを指定するのに最適です(例:macOS の
など)。.DS_Store
グローバル設定ファイルのカスタマイズ
デフォルトのグローバル無視ファイルを変更することも可能です。
別のファイル名を使用する場合
例えば、グローバル無視ファイルを
.gitignore_global に変更したい場合は、以下のコマンドを実行します:
git config --global core.excludesFile ~/.gitignore_global
デフォルト設定に戻す場合
必要な時にデフォルトの状態に戻したい場合は、以下を実行してください:
git config --global --unset core.excludesFile
無視設定の特定方法
追加したファイルがどのレベルで無視されているかを確認するには、以下のコマンドを使用します。
git check-ignore -v <ファイル名>
確認結果の例
.gitignore
で無視されている場合
.gitignore$ git check-ignore -v .DS_Store .gitignore:1:.DS_Store .DS_Store
.git/info/exclude
で無視されている場合
.git/info/exclude$ git check-ignore -v .DS_Store .git/info/exclude:7:.DS_Store .DS_Store
글로벌設定 ~/.config/git/ignore
で無視されている場合
~/.config/git/ignore$ git check-ignore -v .DS_Store /Users/nelson/.config/git/ignore:2:.DS_Store .DS_Store
カスタムグローバルファイルで無視されている場合
$ git check-ignore -v .DS_Store /Users/nelson/.gitignore_global:1:.DS_Store .DS_Store
注意点: 指定されたファイルがどの設定にも含まれていない場合、
git check-ignore -v は出力を生成しません。