.gitignoreの効き方を確かめる手順|決め手の行まで見る
.gitignore と確かめたいファイルの場所を貼り付けて、無視されるかどうかを 1 件ずつ確かめる手順です。決め手になった行の番号、! の行が効かない理由、サブフォルダに置いたときの範囲、書き間違えやすい行の見つけ方まで、画面を追って説明します。
公開読了目安 約5分
この記事の要点
- 貼り付けた .gitignore で、ファイルごとに無視されるかが出る
- 決め手になった行の番号がそのまま分かる
- フォルダごと無視すると、中のファイルを ! で戻せない
- サブフォルダに置いた .gitignore の効く範囲も確かめられる
- 行頭の空白や行末のタブなど、見えない書き間違いも指摘する
目次
.gitignore に書いた行が、本当に狙ったファイルを外しているか。 .gitignoreテスターは、それを 1 件ずつ確かめるツールです。
中身と、確かめたいファイルの場所を貼ると、無視されるかどうかと決め手の行が並びます。 書いたつもりで効いていない行も、行番号つきで知らせます。
「外したはずなのに」あるある 3 つ
ブログの原稿やサイトのファイルを Git で管理していると、次のような食い違いが起きます。
- 下書きフォルダを外したつもりが、まだ変更の一覧に出てくる
- 1 つだけ残したいファイルに ! を付けたのに、やはり外れたまま
- 書いた行をよく見ても、どこが違うのか分からない
どれも、書いた本人が読み返しても気づきにくい形です。 行の並びや、目に見えない 1 文字で、読まれ方が変わるためです。
なぜ書いたとおりに外れないのか
.gitignore は、下の行ほど強く、最後に当てはまった行が勝ちます。 そのうえで、フォルダごと外した場所の中は、Git が見に行きません。
そのため、フォルダを外した行のあとに「この 1 つは残す」と書いても効きません。 残したいなら、フォルダごとではなく「フォルダの中身」を外す書き方が要ります。
さらに、行の頭の空白や、行の終わりのタブは、そのまま名前の一部として読まれます。 画面では見えないので、書いた人ほど気づけません。
.gitignoreテスターの使い方
1. 中身とファイルの場所を入れる
上の欄に .gitignore の中身を貼ります。 下の欄には、確かめたいファイルの場所を 1 行に 1 つずつ入れます。

場所は、リポジトリの一番上からの道のりで書きます。
フォルダを確かめたいときは、最後に / を付けます(build/)。
2. 無視されるかと決め手の行を読む
ファイルごとに「無視される」か「無視されない」が並びます。 その下の「決め手」が、判定を決めた行の番号と中身です。

サンプルでは、8 件のうち 5 件が無視され、3 件が残ります。
src/dist/util.js が残るのは、3 行目の /dist が一番上の dist だけを指すからです。
3. 効かない ! の行を見つける
サンプルの logs/keep.log は、8 行目で残すつもりの行があるのに無視されています。
カードの下に、枠で囲んだ「効かない ! の行」が出ます。

7 行目の logs/ が、フォルダごと外しているのが原因です。
logs/* と中身だけを外す行に変えると、8 行目が効くようになります。
4. サブフォルダに置いた .gitignore を確かめる
.gitignore は、置いたフォルダより下にだけ効きます。 「この .gitignore を置いたフォルダ」に、そのフォルダの名前を入れます。

frontend に置いた場合、/dist は frontend/dist を指します。
backend の中のファイルには効かないので、「この .gitignore の外」と出ます。
5. 行の一覧で書き間違いを探す
結果の下には、行ごとに「決めたパスの数」と注意が並びます。 見えない文字は、記号に置き換えて見せます。

「決めたパスはありません」の行は、入れたファイルのどれにも効いていない行です。 注意が付いていれば、その文のとおりに直してから貼り直してください。
こんな場面で使える
- 原稿のリポジトリに、下書きや画像の元データを入れないための行を足すとき
- 引き継いだサイトの長い .gitignore から、効いていない行を洗い出すとき
- モノレポのサブフォルダに置いた .gitignore が、どこまで効くかを確かめるとき
- Windows と Mac で結果が違うときに、大文字と小文字の扱いを切り替えて比べるとき
使用例
たとえば、ブログの原稿を Git で管理しているライターが、画像の元データを外したいとします。
images/raw/ と書いて、images/raw/photo.psd と images/cover.png を入れます。
前者は無視され、後者は残ると出るので、書いた行が狙いどおりと分かります。
ここで images/raw/keep.txt も残したくなったら、! の行を足して確かめます。
「効かない ! の行」が出たら、images/raw/* に書き換えれば残せます。
安心して使えるポイント
入力した .gitignore とファイルの場所は外部に送らず、ブラウザの中だけで判定します。 社内のリポジトリの設定でも、そのまま貼って試せます。
ただし、すでに Git に記録したファイルは、ここで無視されると出ても変更を追われ続けます。 その場合の外し方と注意点は「.gitignoreが効かない原因と確かめ方」で説明しています。
関連ツール
- robots.txtテスター:サイトのどのページを検索エンジンに見せないかを、同じ形で確かめる
- 正規表現テスター:記号でファイル名や文字列を探す考え方を試す
- 文字コード調査:全角スペースのような見えない文字の正体を 1 文字ずつ調べる
まとめ
.gitignore の効き方は、行の順番・フォルダごとか中身か・見えない 1 文字で変わります。 見た目で読むより、ファイルを並べて決め手の行を見るほうが確実です。
補足: 開発者の方へ
照合は git の wildmatch.c と dir.c の手順を写し、UTF-8 のバイト列の上で行います。
そのため ? は日本語 1 文字ではなく 1 バイトに当たります。
親フォルダは上から順に見て、無視されたフォルダで止まります(prep_exclude と同じ)。
/ を含まない行は名前だけと、含む行は置き場所からのパス全体と比べます。
期待値は git 2.43.0 の git check-ignore --no-index -v -n に答えさせて作りました。
72 通りの .gitignore と 525 件のパスで、判定と決め手の行が一致しています。
git check-ignore -v --no-index logs/keep.log
# .gitignore:7:logs/ logs/keep.logあわせて読みたい
同じテーマ・関連ツールの記事です。