0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.gitignoreが効かない? git check-ignore -vで原因を確認する

0
Posted at

.gitignore に書いたのに、ファイルがGitの管理対象から消えない。そんなときは、パターンを書き足す前に 「どの除外ルールに一致するか」と「すでに追跡されていないか」 を確認します。

初心者向けに、複雑なパターンや優先順位の説明は省略します。git add を使ったことがある方向けの、既存ファイルを変更せずに原因を調べる小ネタです。コマンドはリポジトリのルートで実行します。

どのファイルの何行目が効いているかを確認する

ルートの .gitignore に、次の1行があるとします。

*.log

まだ git add していない build.log がある状態で、次を実行します。

git check-ignore -v -- build.log

確認用のリポジトリでは、次の出力になりました。

.gitignore:1:*.log    build.log

読みやすいように区切りのタブを空白に置き換えています。.gitignore の1行目にある *.log が build.log に一致している、という意味です。

-v は詳細表示のオプションです。ファイル名だけでなく、適用されたルールの場所と内容まで確認できます。ルールが .git/info/exclude や個人設定の除外ファイルにある場合も、出力された場所を手掛かりにできます。

なお、表示されたパターンが ! で始まる場合は、除外を取り消す例外ルールです。出力があることだけで「無視されている」と判断せず、パターンまで読みます。

何も出ないときは、すでに追跡されていないかを見る

同じ *.log があるのに、次のコマンドで何も出ない場合があります。

git check-ignore -v -- tracked.log

今回の確認では、tracked.log を先にコミットしておくと、この状態になりました。

.gitignore は、意図的に追跡しないファイルを除外するための設定です。すでにGitが追跡しているファイルには効きません。 git check-ignore も、既定では追跡済みファイルを表示しません。

追跡されているかは、次で確認できます。

git ls-files --error-unmatch -- tracked.log

今回の例では tracked.log が表示され、終了コードは 0 でした。git ls-files は、Gitのインデックス(次のコミットへ登録する内容)にあるファイルを確認するコマンドです。--error-unmatch を付けると、指定したファイルがインデックスになければ終了コード 1 になります。

未追跡でも、どのルールにも一致しなければ git check-ignore -v は無出力になります。無出力という結果だけでは、この2つを区別できません。

パターン自体を確かめるなら --no-index

追跡済みであることが分かったうえで、「このパターンはファイル名に一致するのか」だけを確認するには、--no-index を使います。

git check-ignore -v --no-index -- tracked.log

今回の出力は次のとおりです。

.gitignore:1:*.log    tracked.log

ここでも区切りのタブを空白に置き換えています。この結果から、パターンは一致していると確認できます。

ただし、--no-index は追跡状態を考慮せずに除外ルールを調べるオプションです。追跡を解除したり、ファイルを削除したりする操作ではありません。実行後も tracked.log は追跡されたままです。

.gitignore が効かないと感じたら、git check-ignore -v でルールを読み、無出力なら git ls-files で追跡状態を確認する。これで、除外パターンを直すべきか、追跡対象を見直すべきかを判断しやすくなります。

確認環境・参考資料

2026年10月、Windows/PowerShell/Git 2.54.0.windows.1 の一時リポジトリで確認しました。ルートの .gitignore に *.log を指定し、未追跡の build.log と、ルール追加前にコミットした tracked.log で、上記の出力と追跡状態を確認しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?