.gitignoreルール検証

ルートの.gitignoreの内容と、ファイル・ディレクトリの相対パス一覧を入力し、各パスがGitの無視対象になるかと、適用されたルール・行番号を表示するツールです。ワイルドカード、ディレクトリ指定、否定ルール、ルールの順序、親ディレクトリが除外された場合の挙動を確認できます。すべてブラウザ内で処理されます。

入力した内容はサーバーへ送信されず、判定はすべてブラウザ内で行われます。
  • リポジトリのルートにある .gitignore 1つと、ルートからの相対パスで判定します。サブディレクトリの .gitignore・.git/info/exclude・グローバル設定(core.excludesFile)は対象外です。
  • パスは未追跡のファイルとして判定します。すでにコミット済み(追跡済み)のファイルには .gitignore が適用されないため、除外するには git rm --cached が必要です。
  • ディレクトリは末尾に / を付けて入力してください(例: dist/)。大文字・小文字は区別します。[[:alpha:]] のような文字クラス名には対応していません。

判定結果

判定するパスを入力すると、無視対象かどうかと理由が表示されます。

使い方

  1. 左に.gitignoreの内容を貼り付けるか、ファイルを読み込みます。
  2. 右に判定したいパスを1行に1つ入力します。ディレクトリは末尾に / を付けます(例: dist/)。
  3. パスごとに「無視される」「無視されない」と、適用されたルールの行番号が表示されます。
  4. 親ディレクトリの除外によって否定ルールが効かない場合は、その理由も表示されます。

このツールについて

ビルド成果物は除外しつつ特定の設定ファイルだけ残したい、といった.gitignoreは、否定ルール(!)や順序の扱いで意図どおりにならないことがよくあります。このツールでは、各パスにどのルールが最後に一致したかを行番号付きで確認できます。

Gitは除外されたディレクトリの中を探索しないため、dist/ を除外すると !dist/keep.json のような否定ルールは効きません。この場合は親ディレクトリが原因であることを表示します。dist/** のようにディレクトリの中身を除外すれば、否定ルールで特定のファイルを戻せます。

入力したパスは未追跡のファイルとして判定します。すでに追跡されているファイルには.gitignoreが適用されません。サブディレクトリの.gitignoreやグローバル設定は初期版の対象外です。

ルールを「*.log」、次の行を「!keep.log」とし、パスにdebug.logとkeep.logを入力すると、debug.logは無視され、keep.logは無視されません。後の否定ルールで例外が戻ることと、判定に使われた行番号をセットで確認できます。

入力するのはリポジトリからの相対パスで、ディレクトリには末尾の / が必要です。実際のGit管理状態を読み取る機能はないため、結果は未追跡パスについてのルール検証として使います。パターンの解析と一致判定はブラウザ内で完結します。

よくある質問

!で否定したファイルが無視されたままなのはなぜですか?

親ディレクトリが除外されていると、Gitはその中を探索しないため否定ルールが効きません。ディレクトリではなく中身を除外(dir/**)してから否定してください。

コミット済みのファイルも判定できますか?

.gitignoreは追跡済みのファイルには適用されません。このツールは未追跡のパスとして判定します。追跡をやめるには git rm --cached を使います。

末尾の / は何を意味しますか?

.gitignoreのルールでは、ディレクトリだけに一致する指定です。パス一覧でも、末尾に / を付けたものをディレクトリとして扱います。