やりたいこと
Laravel ディレクトリ内で下記の場所に新しいディレクトリ files を追加したとします。
Laravel
┗ storage
┗ app
┣ local
┃ ┗ files <- new
┗ public
このままでは新しく追加した files ディレクトリは Git 管理されません。
これを Git 管理できるように設定します。
空のフォルダを Git 管理する
app/ ディレクトリの中身を見てみると .gitignore というファイルが入っているかと思います。
Laravel
┗ storage
┗ app
┣ local
┣ public
┗ .gitignore <- !?
ファイル名からも想像できるように、このファイルは「Git で管理しないもの」を設定するためのファイルとなっています。
app/ ディレクトリ内の .gitignore には下記のような内容が書かれています。
* # app/ ディレクトリ内のすべてのファイルを無視
!public/ # app/public/ ディレクトリは無視しない
!.gitignore # app/.gitignore は無視しない
* は「すべてのファイルが対象」という意味、! は「無視しない(Git 管理する)」という意味になりますので、この場合は
app/ディレクトリ内のすべてのファイルを Git 管理しないが、app/public/ディレクトリとapp/.gitignoreだけは Git 管理する
という設定になります。
設定を書き換える
それでは新しく追加した files ディレクトリを Git 管理するように設定を書き換えます。
まずは app/.gitignore を下記のように編集します。
*
!public/
!local/ # この行を追記
!.gitignore
これで app/local/ がGit 管理できるようになりそうですが、Git は空のディレクトリを管理してくれません。
Git 管理するためには app/local/ に何かしらのファイルを保存する必要があります。
そこで、app/local/ 内にも .gitignore を保存することで Git 管理できるようにします。
*
!.gitignore
!files/
これで app/local/files/ ディレクトリも Git 管理できるようになりました。
さらにさら、これでは開発工程で app/local/files/ ディレクトリに保存されたテスト用のファイルなども Git 管理されてしまうので、それは無視してもらいましょう。
*
!.gitignore
# 逆に、Git 管理したいファイルがある場合は先頭に ! をつけてファイルを指定します。
files ディレクトリ内にも上記内容の .gitignore を設置することで不要なファイルを Git 管理から外すように設定できました。
まとめ
あちこちに .gitignore が出てきましたが、最終的には以下のような構造になります。
Laravel
┗ storage
┗ app
┣ local
┃ ┣ files
┃ ┃ ┗ .gitignore
┃ ┗ .gitignore
┣ public
┗ .gitignore
正しく設定されていれば files ディレクトリも Git 管理できるようになっているかと思います。