Что такое .gitkeep? Как отслеживать и добавлять пустые папки в Git

Предположим, что вы хотите полностью изменить структуру каталогов вашей кодовой базы. 

icon strelka icons icons

узнай больше на курсе

Python программист с нуля
Напиши первый код и собери проекты на Python: 4 месяца онлайн в своём темпе, практика и сертификат. Смотри программу и тарифы.
Подробнее о курсе
Java-разработчик с нуля
Освой Java, ООП и Spring и собери первые проекты: 4 месяца онлайн, практика с проверкой и сертификат. Смотри программу и тарифы.
Подробнее о курсе
C# разработчик с нуля
Освой C# и .NET и собери первые приложения: 4 месяца онлайн, практика с проверкой заданий и сертификат. Смотри программу и тарифы.
Подробнее о курсе

Вы хотите переместить некоторые папки выше, некоторые – ниже, а также переместить большое количество файлов в новые папки, которые вы собираетесь создать.

Вы начинаете перемещать код, параллельно проверяя, все ли работает, и добавляете несколько папок, которые вам пригодятся в следующем проекте. 

На данный момент эти папки пустые. Вы все равно начнете следующий проект через пару дней, так что будет лучше, если вы добавите эти новые папки, раз уж вы начали перемещать кодовую базу. 

Вы добавляете все это в свою ветку проекта, и вы готовы к тому, что кто-то это протестирует. Так что вы сообщаете тем, кто будет инспектировать код, что вы закончили работу со Slack.

После чего они клонируют вашу ветку, но проверка вашего кода заканчивается провалом, так как вы забыли добавить все новые папки, которые должны были добавить. 

Подожите… что?

Что же случилось?

Git не может добавлять пустые каталоги. Он может лишь отслеживать файлы.

Если вы попробуете добавить пустую папку, в вашу ветку она не попадет, несмотря на то, что эта папка будет существовать на вашем локальном компьютере.

Именно поэтому, если кто-то попробует клонировать ваш код, он не получит ту же структуру папок, которая имеется на вашем локальном компьютере.

Итак, что же делать, если такой вариант не работает?

Как использовать .gitkeep?

Так вот, мы знаем, что Git отслеживает только файлы, поэтому нам нужно добавить что-то в папку.

Вы можете добавить что угодно. Все, что от вас требуется, это просто добавить какой-то фиктивный файл для того, чтобы быть уверенным в том, что папка отслеживается и может быть добавлена.

Вы можете просто скопировать и вставить пустой текстовый файл file.txt, и это сработает. Вы можете даже добавить туда изображение котика.

И тем не менее, существует довольно распространенная типовая практика для решения этой проблемы. Она заключается в том, что вам необходимо поместить в ваши пустые папки файл с именем .gitkeep.

Это не какая-то особенная функция Git! Вы можете назвать этот файл как вам угодно. Нет ничего особенного в названии .gitkeep. Некоторые разработчики, например, вместо этого файла добавляют .gitignore.

Правда, название .gitignore может создать путаницу, так как вы не пытаетесь заставить Git игнорировать ваш файл, а просто добавляете его в свою ветку. 

Так или иначе, добавив этот обычный файл в свои папки, вы сможете гарантировать, что, когда придет время, вы сможете добавить эти папки в свою ветку проекта. 

Заключение

.gitkeep - это довольно распространенная вещь, которую можно наблюдать в кодовых базах, где Git должен отслеживать пустую папку.

Имя вашего фиктивного файла не обязательно должно быть .gitkeep, но вы, как разработчик, будете постоянно сталкиваться именно с этим названием.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
icon strelka icons icons

узнай больше на курсе

Python программист с нуля
Напиши первый код и собери проекты на Python: 4 месяца онлайн в своём темпе, практика и сертификат. Смотри программу и тарифы.
Подробнее о курсе
Java-разработчик с нуля
Освой Java, ООП и Spring и собери первые проекты: 4 месяца онлайн, практика с проверкой и сертификат. Смотри программу и тарифы.
Подробнее о курсе
C# разработчик с нуля
Освой C# и .NET и собери первые приложения: 4 месяца онлайн, практика с проверкой заданий и сертификат. Смотри программу и тарифы.
Подробнее о курсе
Фронтенд-разработчик с нуля
Освой HTML, CSS и JavaScript и свёрстай первые сайты: 4 месяца онлайн, практика и портфолио с сертификатом. Смотри программу.
Подробнее о курсе
Разработка приложений на Flutter и Dart
Собери кроссплатформенное приложение на Flutter и Dart: 2 месяца онлайн, практика и сертификат. Смотри программу и тарифы.
Подробнее о курсе
Автоматизированное тестирование на Python
Напиши автотесты на Python с Pytest и Selenium: 4 месяца онлайн, практика на реальных проектах и сертификат. Смотри программу.
Подробнее о курсе
Еще по теме:
Разбираем, какую AI-модель выбрать под задачу: ChatGPT, Claude, Gemini или NotebookLM - их сильные стороны и ограничения
Почему диалог с ИИ снижает продуктивность и как перейти к декларативному управлению задачами вместо бесконечных чат-сессий
Простое объяснение 20 базовых концепций искусственного интеллекта: от нейросетей до агентов и RAG без сложных терминов.
Разбираем причины выгорания senior Android разработчиков: скрытая нагрузка, архитектурные решения и рост требований в экосистеме
Разбираем goroutine, mutex и waitgroup в Go на практическом примере с подсчетом частоты слов и параллельной обработкой данных.
ОСЕННИЕ СКИДКИ
30%
40%
50%
До конца акции: 30 дней 24 : 59 : 59