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

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


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

434e6616f335599d241482f169f68f1b

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

434e6616f335599d241482f169f68f1b

Как и ожидалось, git status -u не показывает нам никаких изменений:

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

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

434e6616f335599d241482f169f68f1b

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

434e6616f335599d241482f169f68f1b

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

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

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

434e6616f335599d241482f169f68f1b

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

434e6616f335599d241482f169f68f1b

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

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

434e6616f335599d241482f169f68f1b

Теперь git status -u показывает желаемый результат:

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

Назад