2018/04/24
Laravel プロジェクトを作成すると、自動でgitignoreも作成されます。
デフォルトで記述されているディレクトリ・ファイルは以下のようになっています。
/vendor /node_modeules /public/storage Homestead.yaml Homestead.json
これらは最初から管理対象から外されます。
しかし開発を進めていくと、途中から上記以外にも管理対象から外したいファイルが出てきます。
この場合、gitignoreに追記するだけでは足りません。
作業ツリーに残ったままになってしまうのです。
今回はそんなケースについての対応をエントリーします。
ユースケース
Git でバージョン管理していたファイルを残したまま追跡の対象外にしたい。
しかし既に管理対象になっているファイルは、後から.gitignoreにファイル名を追加しても変更の追跡が継続される。
例)ideaディレクトリ以下にあるファイルをgitの管理対象から外す
ジェットブレーンのIDE(WebStorm IDE、phpStorm)で開発すると自動で生成されるディレクトリです。IDEのプロジェクトの設定ファイルが入っています。
手順
一旦ファイルを削除したというcommitを作成して、再度加えることで管理の対象外だと認識させます。
1).gitignoreに追記する
2)gitコマンドを実行
1).gitignoreに追記する
gitignoreに管理対象から外すファイルを指定します。
* → ワイルドカード( / 以外の0文字以上の文字にマッチ)
# 特定のファイル名を無視する # → 対象範囲のファイルすべて無視される sample.txt # 特定のファイルのみ無視する # ルート直下のファイルを無視する場合 /sample.txt # 特定の拡張子を無視する # → 対象範囲の該当ファイルはすべて無視される *.json # 特定のディレクトリ名を無視する(※チュートリアル) # → 対象範囲の該当ディレクトリすべて無視される .idea/ # ルートからのパスを指定して特定のディレクトリを無視する common/css/ # 特定のディレクトリ名直下にある特定の拡張子を無視する **/img/ # 指定したファイル/ディレクトリを無視しない !common/img/*.mp3
ルートは .gitignore のあるディレクトリとします。
gitignore に追記しただけだと作業ツリーに一部データが残っていたりします。
2)gitコマンドを実行
Bitbucket の GUI では該当するコマンドがないのでコンソールで作業します。
コマンドの構文は以下になります。
# ファイル指定してキャッシュ削除
git rm --cached hoge.txt
# ディレクトリを指定してキャッシュ削除
git rm -r --cached hoge/
# ファイル全体キャッシュ削除
git rm -r --cached .
これでローカルでファイルを残したまま管理対象から外すことができます。
★ 管理対象から外す+ファイルも削除
git rm hoge.txt
★ ディレクトリごと削除
git rm -r hoge/
上手くいけば以下のようになります。
このあとは、通常通りコミット → プッシュすればOKです。
以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。