Оскільки Git не знає папок, а знає лише файли, порожні структури папок не потрапляють у репозиторій. Оскільки багатьом фреймворкам і проектам це абсолютно необхідно, вони повинні там опинитися. Поширеною практикою є створення так званих файлів-заповнювачів (часто званих .gitkeep), які неявно визначають структуру папок. Ви можете легко створити ці файли та, за бажання, переконатися, що інші файли в папках ігноруються.
Спочатку ми створюємо тестове сховище та створюємо кілька підпапок:
434e6616f335599d241482f169f68f1b
Тепер ми маємо таку структуру папок:
434e6616f335599d241482f169f68f1b
Як і слід було очікувати, git status -u не показує нам змін:

Тепер ми будемо використовувати find для створення файлів заповнювачів у всіх необхідних місцях:
434e6616f335599d241482f169f68f1b
Тепер ми отримали таку структуру папок / файлів:
434e6616f335599d241482f169f68f1b
Git status -u тепер показує нам, що всі папки (неявно) опиняються у сховищі:

Якщо ми зараз хочемо переконатись, що структура папок завжди потрапляє у сховище, але не будь-які файли (крім файлів-заповнювачів), ми створюємо gitignore:
434e6616f335599d241482f169f68f1b
Ми використовуємо Синтаксис подвійної зірки:
434e6616f335599d241482f169f68f1b
Перший рядок рекурсивно ігнорує всі файли та папки (на будь-якому рівні) у папці "foo", другий рядок рекурсивно виключає з цього правила всі папки (на будь-якому рівні), а третій - усі файли .gitkeep (на будь-якому рівні) .
Тепер давайте створимо кілька тестових файлів:
434e6616f335599d241482f169f68f1b
Git status -u тепер показує нам бажаний результат:
