2022/08/17
gitの管理対象外にしたいファイルは .gitignore
というファイルに記述します。
しかし開発途中で管理対象から外したいファイルが出てきた場合、.gitignore
に追記するだけでは足りません。
ワークディレクトリに残ったままになってしまうのです。
今回はそんなケースについての対応をエントリーします。
git status
で即座に表示されなくなります。
やりたいこと
訳あってローカルとサーバーのPHPのバージョンが違う
→ composer.json
と composer.lock
のファイルはgitの対象ファイルから外したい。
→ gitignoreに追記したのにワークディレクトリには常に表示されて鬱陶しい。
作業手順
.gitignoreに記述してgit push
git の管理対象外にしたいファイルを.gitignoreに記述します。
記述したらgit push
でリモートリポジトリにも送ります。
次にSSHでサーバーにアクセスしてgit pull
をして同期をとります。
ファイルを指定してキャッシュを削除
サーバー側から以下のコマンドを実行します。
# ファイルを指定してキャッシュ削除
git rm --cached composer.json
git rm --cached composer.lock
# ディレクトリを指定してキャッシュ削除
git rm -r --cached data/cache/
git commit -m "untrack files"
git push
ローカルにある composer.json と composer.lock は削除されません。
git pull 実行
git pull
を実行してコンフリクトを起こした場合、スタッシュを実行してプルします。
$ git stash save "2019-09-03"
$ git pull
$ git stash apply
手作業で削除されたファイルを元に戻す
このままだと次に何かコミットするときに怒られるので消します。
$ git rm composer.json
$ git rm composer.lock
次にバックアップしていたcomposer.jsonとcomposer.lockを手動で元に戻します。
これでgit status
を実行してもワークディレクトリに表示されません。
とても正攻法と呼べるやり方ではありませんが。。(汗)
以上です。
Udemyを使ったLaravel学習方法
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。