⚙️
「.gitignore」が反映されないとき
状況
.gitignore
へ Git の管理対象から除外したいファイルを記載したが、反映されない。
.gitignore とは?
「Git の管理対象から除外するファイル or ディレクトリ」を指定するためのファイルのこと。
GitHub 上にアップしたくないファイルを指定したり、リポジトリをすっきりと整理することができる。
以下、公式ドキュメントも掲載しておく。
原因
管理対象から除外したいファイルが、既にgit add
されているため。
(キャッシュにインデックスが残っているため。)
.gitignore の仕様(おさらい)
git add
の実行時に、「.gitignore」に記載されているファイルを除外するという仕様のため、
既にgit add
されているファイルは「.gitignore」の記載に関係なく管理対象となる。
解決策
以下、手順 1〜3 を記す。
1. .gitignore で除外したいファイルを指定する
2. キャッシュを削除する
- 全体のキャッシュを削除する場合(ファイルはそのまま)
git rm -r --cached .
- 指定したファイルのキャッシュを削除する場合(ファイルはそのまま)
# ファイル
git rm --cached [ファイル名]
# ディレクトリ
git rm -r --cached [ディレクトリ名]
以下、ファイルやディレクトリを指定した例である。
# 「config.ini」というファイルを除外する
git rm --cached config.ini
# 「node_modules」というディレクトリを除外する
git rm -r --cached node_modules
- ファイル自体を削除する場合
※念の為、掲載しておく。
# ファイル
git rm [ファイル名]
# ディレクトリ
git rm -r [ディレクトリ名]
※-r
は、「ディレクトリ内の全てのファイル」と「サブディレクトリ」を対象にするオプションのこと。
3. コミット及びプッシュを実行する
git add .gitignore
git commit -m "任意のコメントを入力"
git push origin main
その他
Git の管理対象
という表現について、しばしば追跡(tracking)
と表記されることも多いが、
本記事では意図的に前者の表現を用いた。
以上である。
Discussion