ステージングエリアにあるvendorファイルを消す

はじめて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を使っています。気づいたことや新しい発見など情報を発信していきます。メールはこちら

 

-環境構築