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