Git и пустые папки

Поскольку хорошо известно, что Git не знает папок, а только файлы, пустые структуры папок не попадают в репозиторий. Тем не менее, поскольку многим фреймворкам и проектам они абсолютно необходимы, они должны там оказаться. Обычной практикой является создание так называемых файлов-заполнителей (часто называемых .gitkeep), которые неявно определяют структуру папок. Эти файлы могут быть легко созданы и, при желании, могут также гарантировать, что другие файлы в папках игнорируются.


Сначала мы создаем тестовое хранилище и создаем несколько подпапок:

434e6616f335599d241482f169f68f1b

Теперь у нас есть следующая структура папок:

434e6616f335599d241482f169f68f1b

Состояние git -u показывает нам без изменений, как ожидалось:

Git и пустые папки

Теперь мы используем find для создания файлов-заполнителей во всех необходимых местах:

434e6616f335599d241482f169f68f1b

Теперь мы получили следующую структуру папок / файлов:

434e6616f335599d241482f169f68f1b

Состояние git -u теперь показывает нам, что все папки (неявно) попадают в репозиторий:

Git и пустые папки

Если мы хотим убедиться, что структура папок всегда находится в хранилище, а не в каких-либо файлах (кроме файлов-заполнителей), мы создаем gitignore:

434e6616f335599d241482f169f68f1b

Мы используем синтаксис двойной звезды :

434e6616f335599d241482f169f68f1b

Первая строка рекурсивно игнорирует все файлы и папки (на любом уровне) в папке «foo», вторая строка исключает все папки (на любом уровне) рекурсивно из этого правила, а третья строка исключает все файлы .gitkeep (на любом уровне) ,

Теперь мы создадим несколько тестовых файлов:

434e6616f335599d241482f169f68f1b

Состояние git -u теперь показывает нам желаемый результат:

Git и пустые папки

Назад