Мне нравятся ответы @ Artur79 и @mjs, поэтому я использовал комбинацию обоих и сделал их стандартом для наших проектов.
find . -type d -empty -exec touch {}/.gitkeep \;
Однако только несколько наших разработчиков работают на Mac или Linux. На Windows много работы, и я не смог найти эквивалентной простой однострочной, чтобы выполнить то же самое там. Некоторым посчастливилось установить Cygwin по другим причинам, но назначение Cygwin только для этого казалось излишним.
Изменить для лучшего решения
Итак, поскольку большинство наших разработчиков уже установили Ant , первое, о чем я подумал, - собрать файл сборки Ant, чтобы выполнить это независимо от платформы. Это все еще можно найти здесь
Однако , позже я подумал, что было бы лучше превратить это в небольшую служебную команду, поэтому я пересоздал ее с помощью Python и опубликовал ее в PyPI здесь . Вы можете установить его, просто запустив:
pip3 install gitkeep2
Это позволит вам рекурсивно создавать и удалять .gitkeep
файлы, а также добавлять к ним сообщения, чтобы ваши коллеги могли понять, почему эти каталоги важны. Этот последний бит является бонусом. Я подумал, что было бы неплохо, если бы файлы .gitkeep
могли самодокументироваться.
$ gitkeep --help
Usage: gitkeep [OPTIONS] PATH
Add a .gitkeep file to a directory in order to push them into a Git repo
even if they're empty.
Read more about why this is necessary at: https://git.wiki.kernel.org/inde
x.php/Git_FAQ#Can_I_add_empty_directories.3F
Options:
-r, --recursive Add or remove the .gitkeep files recursively for all
sub-directories in the specified path.
-l, --let-go Remove the .gitkeep files from the specified path.
-e, --empty Create empty .gitkeep files. This will ignore any
message provided
-m, --message TEXT A message to be included in the .gitkeep file, ideally
used to explain why it's important to push the specified
directory to source control even if it's empty.
-v, --verbose Print out everything.
--help Show this message and exit.
Надеюсь, вы найдете это полезным.