はじめてGitを使ったとき、vendorディレクトリのファイルがいくつかステージングエリアに上がっていて戸惑ったことがあります。
(※ .gitignore に記載しているのになんで?)
今回はこの対処方法についてエントリーします。
手順
1.ファイルを残したまま管理対象から外す
# 個別に
$ git rm --cached vendor/composer/autoload_classmap.php
# ディレクトリごと
$git rm -r --cached vendor
ポイント
--cached オプションを付けないとローカルのファイルも削除されるので注意!
2.コミットしてプッシュ
$ git commit -m "untrack vendor directory"
$ git push
3.デプロイ作業
SSHで本番サーバにアクセスして先ほどプッシュしたリモートリポジトリのデータをプル
$ git pull
すると、管理対象から除外したファイル(vendorのファイル)は削除されるので、エラー画面になります。
4.composer install を実行
$ composer install
ポイント
composer.lock にもとづいてパッケージをインストールします。
インストール後は以下も内部で一緒に実行されます。
・composer dump-autoload
・php artisan clear-compiled
・php artisan optimize
これでエラーがなくなり、ローカルのステージングエリアにあった vendor ファイルも表示されなくなります。
ただ、このやり方だと一瞬でもエラー画面を表示することになってしまいます。
本番サーバから同様の手順をやって、ローカルで git pull をしたほうがいいかもしれません。
以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。