AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

サブディレクトリの .gitignore と .(git)keep

以下のような構造のディレクトリと .gitignore がある。

/
├ .gitignore
└ log
  ├ csv_import
  │ └ .gitkeep
  └ .gitkeep
/log/*
!/log/.gitkeep

ここから csv_import ディレクトリをひな形として登録したいので、 /log/csv_import/.gitkeep をコミットに含める、つまりサブディレクトリ以下の .gitkeep をどうやって登録するのか、というお話。

こうする

以下のように記述することで、 /log/ ディレクトリ以下から再帰的に .gitkeep を見つけて追跡対象として登録してくれる。

/log/**
!/log/**/
!/log/**/.gitkeep

qiita.com

めっちゃ助かった。

世間でよくある方法

qiita.com

何故なら、Gitはパフォーマンス上の理由から、ディレクトリを無視した場合、そのディレクトリ中の一部のファイルやディレクトリだけを無視しないようにすることはできないという制限を設けているからだ。

という感じで、個別に追跡ファイルに登録したりがんばっていたのだが、なんだかよくわからないし追跡対象にならないし、とめっちゃ悩んでいたのであった。