ファイルではなくディレクトリのみを追跡するために、次のことを行いました。ファイルのみを追跡するgitに関する@PeterFarmerのコメントのおかげで、以下に説明するように、ファイルを除くすべてのディレクトリを保持することができました。
# exclude everything in every folder
/data/**/*.*
# include only .gitkeep files
!/data/**/*.gitkeep
これを.gitignoreファイルに追加すると機能します。以下は私のフォルダ構造です。
data/
├── processed
│ ├── dataset1.csv
│ └── dataset2.csv
├── raw
│ ├── raw_dataset1.json
└── test
├── subfolder
│ └── dataset2.csv
└── reviews.csv
私がそうするときgit add . && git status、gitはフォルダだけを認識し、ファイルは認識しません。
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: .gitignore
new file: data/processed/.gitkeep
new file: data/raw/.gitkeep
new file: data/test/.gitkeep
new file: data/test/subfolder/.gitkeep
.gitignoreファイルについては次の点に注意してください。
スラッシュを前に付けると、ルートディレクトリのみが検索されます。
/ dir
二重アスタリスクは、0個以上のディレクトリを検索します。
/ ** /