Edited at

アップロードした画像ファイルをgitの管理対象から外す


はじめに

プログラミング初心者がCarrieWaveを使って、画像アップロード機能を開発していました。その際、大量の画像ファイルがgitでバージョン管理をされていたことにあとあと気づきました。

なので、 必要のない画像ファイルをgitの管理対象から外す方法をまとめます。

※今回は、CarrieWaveを使って、画像アップロードすることを前提としています。

しかし、CarrieWaveの詳細については、こちらでは触れません。


バージョン

carrierwave 1.3.1

rails 5.1.7


画像ファイルの保存場所を確認する

CarrieWaveでは、アップロードされた画像ファイルの保存場所は、デフォルトで決まっています。

$ rails g uploader imagesで、uploaderをジェネレータした場合、app/uploaders/images_uploader.rbファイルが生成されます。

中身を見てみると、下記のコードが記載されています。


images_uploader.rb

def store_dir

"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

こちらのコードでは、アップロードされた画像ファイルは"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"の形式で保存することを記しています。

実際にアプリケーションに画像ファイルをアップロードした場合、その画像ファイルは下記のようなディレクトリ構造で保存されているはずです。

これで、画像ファイルの保存場所を確認できました。

└public

└uploads
└#{model.class.to_s.underscore}
└#{mounted_as}
└#{model.id} #画像が保存されるディレクトリ


.gitignoreを編集する

.gitignoreを使うと無視する(Gitのトラッキングの対象外とする)ファイル or ディレクトリを指定できます。

※ .gitignoreの詳細は、こちらを参照してください。

今回は、CarrierWaveでアップロードした画像ファイルは全てGit管理下に置かないことに決めます。

その場合、下記のように.gitignoreを編集します。

#~~上記にある他のignoreは省略

以下を書き加えます。
# Ignore uploaded files in development
/public/uploads/

これで、uploadsディレクトリ以降のファイル、つまり今後アップロードした画像ファイルはgit管理下から外すことができます。


.gitignoreしたファイルをリポジトリから削除する方法を知りたい方はこちら


参考リンク