Git で ignore されたファイルがなぜ(どこで) ignore されているのか確認する

.gitignore には追跡(tracked)したくないファイル名パターンを記載しますが、 設定が肥大化するとファイルのどこで 追跡を無視しているのか がわからなくなることがあります。

また以前弊社のブログでも取り上げましたが、.gitignore だけでなく、 .git/info/exclude ファイルも同様に 追跡しないファイル を定義することができます。

さらには ~/.gitconfig に設定できる core.excludesFile$XDG_CONFIG_HOME/git/ignore.[1] など、gitignore を設定できるファイルは多くあります。[gi]

追跡を無視したファイルを確認する

「どのファイルで」「どの設定で」あるファイルを追跡しないのかを知りたいとき、git check-ignore が役立ちます。

シンプルな使い方は、-v オプションを付与し、設定状況を知りたいファイル/ディレクトリを引数に与えるだけです。

$ git check-ignore -v .env
.gitignore:4:.env       .env

ある程度自明ですが、見方は以下の通りです。

左:中:右 ファイル名

設定が記述されているファイル

設定が記述されている行数

設定内容

ファイル名

対象のファイル

-n オプションを付与すると、追跡中のファイルも表示されます。

$ git check-ignore -v -n *
.gitignore:1:node_modules/      node_modules
::      package-lock.json
::      package.json

追跡するファイル(無視されていないファイル)については、 対象となる設定が存在しないため、: で区切られた左側の表示が空になっています。


「どうしてこのファイルを追跡できないのだろう…​」と困ったときに役立ちました。ぜひご活用ください。


1. $XDG_CONFIG_HOME が空の場合は $HOME/.config/git/ignore が読み込まれます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

sixteen − seven =