⚙️

「.gitignore」が反映されないとき

2024/07/17に公開

状況

.gitignoreへ Git の管理対象から除外したいファイルを記載したが、反映されない。

.gitignore とは?

「Git の管理対象から除外するファイル or ディレクトリ」を指定するためのファイルのこと。
GitHub 上にアップしたくないファイルを指定したり、リポジトリをすっきりと整理することができる。

以下、公式ドキュメントも掲載しておく。
https://docs.github.com/ja/get-started/getting-started-with-git/ignoring-files

原因

管理対象から除外したいファイルが、既に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