gitignore対象でも追跡済みファイルはgit add -uで更新できる
.gitignoreに書いたファイルでも、すでにgit管理下(追跡済み)なら変更は無視されません。git add -uで既存の追跡ファイルだけをstageする方法と、新規ファイルとの違いを実際に確認した範囲で解説します。
- Git
- gitignore
- git add
- バージョン管理
- トラブルシューティング
.gitignore に書いたファイルなのに、変更がgitに拾われてしまう。逆に git add <path> を実行したら ignore の警告で止まった。そんな経験はないでしょうか。
原因は単純。すでに追跡(tracked)済みのファイルには .gitignore が効かないためです。この記事では、追跡済みファイルだけを更新する git add -u の使い方と、新規ファイルとの扱いの違いを整理します。
今日の結論
.gitignore対象でも、すでに追跡済みのファイルは無視されず変更を記録できる- 通常の
git add <path>が ignore 警告で止まるときは、git add -uで既存の追跡ファイルだけをstageする- 新規ファイルの追加はこの方法ではできない(ignoreが効くため)
- 新規ファイルも追跡させたいときは、
.gitignoreの見直しかgit add -fを検討する
筆者は2026年7月19日17時ごろ、運用ドキュメント更新の作業中にこの挙動を実際に確認しました。
なぜ.gitignore対象なのに追跡され続けるのか
.gitignore の役割は、まだ追跡していないファイルをgitの管理対象から外すことです。すでに git add 済み、つまり一度でもcommit履歴に載ったファイルには関与しません。
言い換えると、.gitignore は「新規ファイルの入口」を制限する仕組みであって、「既存ファイルの変更」までは止められない設計です。ここを誤解していると、「.gitignoreに書いたのに反映される」という混乱につながります。
追跡済みか、ignore対象かを確認する
対処の前に、対象ファイルが追跡済みかどうかを確認します。
git check-ignore -v <path>
git ls-files <path>
git check-ignore -v <path>— ignoreルールに該当するか、どのルールが効いているかを確認するgit ls-files <path>— すでに追跡済みかどうかを確認する(結果が表示されれば追跡済み)
両方に該当する(ignore対象かつ追跡済み)場合が、今回のケースです。
git add -u で追跡済みファイルだけをstageする
追跡済みだと分かれば、git add -u で対象ファイルをstageできます。
git add -u
git add -u は、すでに追跡しているファイルの変更・削除だけをstageするオプションです。ignore設定があっても、追跡済みという条件だけで拾われます。新規ファイルはこの操作では追加されません。ここが通常の git add . との違いです。
新規ファイルも追加したいときの選択肢
新規ファイルまで含めて管理したい場合は、git add -u では対応できません。次のどちらかを検討します。
.gitignoreのルールを見直し、対象パスを除外設定から外す- 例外的に追跡させたいだけなら
git add -f <path>で強制的に追加する
.gitignore の見直しは影響範囲が広くなりやすいため、まずは対象を絞った -f で様子を見る運用が安全です。
点検チェックリストとまとめ
| チェック項目 | コマンド |
|---|---|
| ignore対象かを確認する | git check-ignore -v <path> |
| 追跡済みかを確認する | git ls-files <path> |
| 追跡済みの変更だけをstageする | git add -u |
| 新規ファイルを例外的に追跡させる | git add -f <path> |
.gitignore は新規ファイルの入口を制限するだけで、追跡済みファイルの変更までは止めません。ignoreと追跡状態を切り分けてから git add -u を使うと、意図しない反映やstage漏れを防ぎやすくなります。
サイト公開まわりの運用は、下記もあわせて確認してください。
本記事は2026年7月21日時点の情報です(git操作の実測は2026年7月19日)。gitのバージョンや設定によって細部の挙動が異なる可能性があるため、重要な操作の前は git status で状態を確認してから進めてください。