Git не отслеживает пустые каталоги. См. Git FAQ для более подробного объяснения. Предложенный обходной путь - поместить файл .gitignore
в пустой каталог. Мне не нравится это решение, потому что .gitignore
является "скрытым" соглашением Unix. Также нет объяснения, почему каталоги пусты.
Я предлагаю поместить файл README в пустой каталог, объясняя, почему каталог пуст и почему его нужно отслеживать в Git. С файлом README, что касается Git, каталог больше не является пустым.
Реальный вопрос - зачем вам пустой каталог в git? Обычно у вас есть какой-то сценарий сборки, который может создать пустой каталог перед компиляцией / запуском. Если нет, то сделайте один. Это гораздо лучшее решение, чем помещать пустые каталоги в git.
Итак, у вас есть причина, по которой вам нужен пустой каталог в git. Укажите эту причину в файле README. Таким образом, другие разработчики (и вы в будущем) знаете, почему там должен быть пустой каталог. Вы также будете знать, что вы можете удалить пустой каталог, когда проблема, требующая пустого каталога, была решена.
Чтобы вывести список всех пустых каталогов, используйте следующую команду:
find -name .git -prune -o -type d -empty -print
Чтобы создать заполнители README в каждом пустом каталоге:
find -name .git -prune -o -type d -empty -exec sh -c \
"echo this directory needs to be empty because reasons > {}/README.emptydir" \;
Чтобы игнорировать все в каталоге, кроме файла README, вставьте следующие строки в .gitignore
:
path/to/emptydir/*
!path/to/emptydir/README.emptydir
path/to/otheremptydir/*
!path/to/otheremptydir/README.emptydir
Кроме того, вы можете просто исключить каждый файл README из игнорируемого:
path/to/emptydir/*
path/to/otheremptydir/*
!README.emptydir
Чтобы вывести список всех файлов README после того, как они уже созданы:
find -name README.emptydir