Edited at

.gitignoreしたファイルをレポジトリから削除する方法


はじめに

 前回、必要のない画像ファイルをgitの管理対象から外す方法をアップしました。

加えて今回は、.gitignoreしたファイルをリポジトリから削除する方法をまとめます。具体的には、git管理対象から外したファイルやディレクトリをインデックス環境から削除して、レポジトリからも削除する方法です。


.gitignoreしてもファイルは消えない

 開発途中で.gitignoreを設定しても、今までgit管理下に置かれていたファイルやディレクトリは消えません。なので、過去にアップロードした画像ファイルなどはレポジトリに残っています。

今回はそれらをレポジトリから消し去り、今後のgit管理対象からも外していきます。

※ git知識の確認はこちらをどうぞ


インデックス環境からファイルを消す


実行例

・ファイルをインデックス環境から削除

$ git rm --cached ファイル名

・ディレクトリごとインデックス環境から削除
$ git rm --cached -r ディレクトリ名



結果(public/uploadsディレクトリごと削除した場合)

   deleted: public/uploads/~~


 これで、インデックス環境から完全に消し去りました。

そして、この結果をcommitし、リモートレポジトリにpushします。

すると、今まで消したかったファイルが、リモートレポジトリからも消すことができます。


結果

 開発途中で.gitignoreを設定した場合でも、レポジトリ内にはgit管理対象から外したファイルやディレクトリが残っています。(今まで管理していたわけですから。)

それらをインデックス環境から削除することで、レポジトリ内にある今回ignoreしたファイルやディレクトリも削除できました。


※補足

 今回、レポジトリ内にあるignoreしたファイルやディレクトリを削除したとしても、コミット履歴をたどることで削除したファイルを閲覧することができます。

なので、画像アップロードをテストする際など、不適切な画像をignoreせずコミットしないようにしましょう。

結論、gitignoreはignoreするべき時にしましょう。


参考リンク