Как сохранить пустой каталог? .gitkeep или .gitignore?

Обычные операции Git add и checkout сохраняют каталоги через файлы внутри. Выберите .gitkeep для изначально пустого каталога или .gitignore для игнорирования будущих генерируемых файлов.

1. Сохраните файл-заполнитель

Создайте uploads и пустой uploads/.gitkeep в редакторе, затем подготовьте именно этот файл:

git add -- uploads/.gitkeep

Убедитесь, что индекс содержит uploads/.gitkeep. Имя .gitkeep — соглашение без особого поведения Git; подойдёт и README с описанием каталога. Будущие файлы автоматически не игнорируются.

git ls-files -- uploads/

2. Сохраните каталог, игнорируя содержимое

Вместо .gitkeep создайте uploads/.gitignore с двумя строками ниже. * игнорирует содержимое, !.gitignore оставляет файл правил доступным для отслеживания.

Сам файл правил служит отслеживаемым заполнителем, то есть каталог содержит его. Новые файлы намеренно игнорируются до изменения правил.

*
!.gitignore

Почему ! не сохраняет файл в игнорируемом каталоге?

3. Проверьте выбранный подход

Для варианта с .gitignore подготовьте файл правил:

git add -- uploads/.gitignore

Создайте uploads/example.bin и проверьте совпадение:

git check-ignore -v -- uploads/example.bin

Индекс должен содержать uploads/.gitignore, но не example.bin. Если родительское правило исключает сам uploads, сначала исправьте его, чтобы Git мог прочитать вложенный .gitignore.

git ls-files -- uploads/

Как игнорировать папки? folder/ или /folder/

Точное поведение и подробности описаны в официальных источниках: Документация Git · Документация git add