以下のような構造のディレクトリと .gitignore
がある。
/ ├ .gitignore └ log ├ csv_import │ └ .gitkeep └ .gitkeep
/log/* !/log/.gitkeep
ここから csv_import ディレクトリをひな形として登録したいので、 /log/csv_import/.gitkeep
をコミットに含める、つまりサブディレクトリ以下の .gitkeep
をどうやって登録するのか、というお話。
こうする
以下のように記述することで、 /log/
ディレクトリ以下から再帰的に .gitkeep
を見つけて追跡対象として登録してくれる。
/log/** !/log/**/ !/log/**/.gitkeep
めっちゃ助かった。
世間でよくある方法
何故なら、Gitはパフォーマンス上の理由から、ディレクトリを無視した場合、そのディレクトリ中の一部のファイルやディレクトリだけを無視しないようにすることはできないという制限を設けているからだ。
という感じで、個別に追跡ファイルに登録したりがんばっていたのだが、なんだかよくわからないし追跡対象にならないし、とめっちゃ悩んでいたのであった。