.gitignore の使用
最終更新日 2024年05月09日(木)
Table of Contents
アプリケーションのソースコード、その依存関係、小さな静的アセット (CSS、イメージ)、およびほとんどの設定ファイルは、Heroku にデプロイするために Git リポジトリにチェックインする必要があります。
ログファイル、大きな静的アセット、SQLite データベースファイルなど、その他はすべて、リポジトリで 1 つ以上の .gitignore
ファイルを介して無視する必要があります。これにより、slug のサイズが低く抑えられ、新しい dyno を開始できる速度が上がります。
ディレクトリの無視
Git を使用してデプロイする場合、リポジトリのブランチが Heroku にプッシュされます。log
や tmp
ディレクトリなど、過分のアセットが送信されないようにするには、これらの特定のアセットを無視し、リポジトリから削除するように Git を設定します。設定は .gitignore
ファイルで行われます。
一部の言語フレームワークは、.gitignore
ファイルを自動的に生成します。このファイル内のパターンに一致するファイルは、リポジトリへの追加の対象にはなりません。アプリケーションフォルダーのルートに特定のパターンに一致する .gitignore
がすでに存在していることがありますが、この場合でも追加のフォルダーを無視するように設定できます。
log
および tmp
ディレクトリの内容を無視する必要があると想定してみます。この例では、ログフォルダー内で *.log
を無視し、tmp
フォルダーを一緒に無視するアプローチを使用します。
$ git rm -r -f log
rm 'log/development.log'
rm 'log/production.log'
rm 'log/server.log'
rm 'log/test.log'
$ git rm -r -f tmp
fatal: pathspec 'tmp' did not match any files
$ mkdir log
$ echo '*.log' > log/.gitignore
$ git add log
$ echo tmp >> .gitignore
$ git add .gitignore
$ git commit -m "ignored log files and tmp dir"
SQLite ファイルの無視
ローカルデータベースに SQLite を使用する場合 (これが一部の言語フレームワークのデフォルト)、その結果生じるデータベースファイルを同じように無視する必要があります。これを行う 1 つの方法は次のとおりです。
$ git rm -f db/*.sqlite3
$ echo '*.sqlite3' >> .gitignore
$ git add .gitignore
$ git commit -m "ignored sqlite databases"
参考情報
- .gitignore に関する Git Community Book