Как добавить пустой каталог в репозиторий Git?

Как добавить пустой каталог (который не содержит файлов) в репозиторий Git?

3573
задан Laurie Young 22 сент. '08 в 19:41
источник поделиться
32 ответов
  • 1
  • 2

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

# Ignore everything in this directory
*
# Except this file
!.gitignore

Тогда вам не нужно правильно оформлять заказ так, как вам нужно делать в решении m104.

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

Задание комментария @GreenAsJade:

Я думаю, стоит отметить, что это решение делает именно то, о чём задавался этот вопрос, но, возможно, это не то, что искали многие люди, рассматривающие этот вопрос. Это решение гарантирует, что каталог остается пустым. В нем говорится: "Я действительно не хочу, чтобы файлы проверялись здесь". В отличие от "У меня нет файлов для регистрации здесь, но, но мне нужен каталог здесь, файлы могут появляться позже".

3470
ответ дан Jamie Flournoy 01 июня '09 в 1:10
источник поделиться

Вы не можете. См. Git FAQ.

В настоящее время дизайн индекса git(промежуточная область) разрешает только файлы быть перечислены, и никто не достаточно компетентен чтобы сделать изменение пустым в каталогах достаточно эта ситуация для его исправления.

Каталоги добавляются автоматически при добавлении в них файлов. Что, каталоги никогда не должны быть добавлены к репозиторию и не отслеживаются самостоятельно.

Вы можете сказать "git add <dir>", и это добавит туда файлы.

Если вам действительно нужен каталог для в выписках вы должны создать файл в нем. .gitignore хорошо работает для эта цель; вы можете оставить его пустым, или введите имена файлов, которые вы Ожидается, что они появятся в каталоге.

996
ответ дан Andy Lester 22 сент. '08 в 19:42
источник поделиться

Создайте пустой файл с именем .gitkeep в каталоге и добавьте его.

610
ответ дан Artur79 07 дек. '11 в 19:03
источник поделиться

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

379
ответ дан John Mee 15 марта '11 в 2:38
источник поделиться
touch .keep

В Linux это создает пустой файл с именем .keep. Это имя предпочтительнее, чем .gitkeep, поскольку первое агностическое значение Git, тогда как последнее относится к Git. Во-вторых, как отметил другой пользователь, соглашение о префиксе .git должно быть зарезервировано для файлов и каталогов, которые сам использует Git.

В качестве альтернативы, как указано в другом , каталог может содержать описательный README или README.md файл.

Конечно, это требует, чтобы присутствие файла не вызывало нарушения вашего приложения.

268
ответ дан A-B-B 29 янв. '14 в 7:29
источник поделиться

Зачем нам нужны пустые папки с версией

Первое:

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

Это просто не будет отслеживаться. Но есть сценарии, в которых могут быть полезны пустые каталоги версий, например:

  • создать предварительно определенную структуру папок и сделать эту структуру доступной для каждого пользователя/вкладчика репозитория; или, в качестве специализированного случая выше, создание папки для временных файлов, таких как cache/ или logs/ каталоги, где мы хотим предоставить папку, но .gitignore ее содержимое
  • связанные с aboce, некоторые проекты не будут работать без некоторых папок (что часто является намеком на плохо разработанный проект, но это частый сценарий реального мира и, возможно, могут быть, скажем, проблемы с разрешением).

Некоторые предлагаемые способы обхода

Многие пользователи предлагают:

  1. Размещение файла README или другого файла с некоторым контентом, чтобы сделать каталог непустым или
  2. Создание файла .gitignore со своего рода "обратной логикой" (т. .gitignore Для включения всех файлов), который, в конце концов, служит той же цели подхода №1.

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

  • Почему вы должны помещать фальшивые файлы или README, которые, возможно, вы действительно не хотите в своем проекте?
  • Зачем использовать .gitignore чтобы делать что-то (хранение файлов), что является очень противоположным тому, что означало (исключая файлы), даже если это возможно?

.gitkeep подход

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

Хотя это может показаться не такой большой разницей:

  • Вы используете файл, который имеет единственную цель хранения папки. Вы не помещаете туда какую-либо информацию, которую вы не хотите ставить.

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

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

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

    • Файл, не связанный с кодом (из-за ведущей точки и имени)
    • Файл, явно связанный с Git
    • Его цель (содержание) четко сформулирована и последовательна и семантически противоположна по своему смыслу, чтобы игнорировать

Принятие

Я видел подход .gitkeep принятый очень важными структурами, такими как Laravel, Angular-CLI.

226
ответ дан Cranio 05 дек. '13 в 2:32
источник поделиться

Как описано в других ответах, Git не может представлять пустые каталоги в своей промежуточной области. (См. Git FAQ.) Однако, если для ваших целей каталог достаточно пуст, если он содержит только файл .gitignore, то вы можете создавать файлы .gitignore в пустых каталогах только через:

find . -type d -empty -exec touch {}/.gitignore \;
120
ответ дан mjs 03 мая '11 в 18:17
источник поделиться

Энди Лестер прав, но если ваш каталог просто должен быть пустым, а не пустым, вы можете поместить в него пустой файл .gitignore в качестве обходного пути.

В стороне, это проблема реализации, а не фундаментальная проблема с дизайном хранилища Git. Как уже упоминалось много раз в списке рассылки Git, причина, по которой это не была реализована, заключается в том, что никто не заботился о том, чтобы отправить патч для него, а не то, что он не может или не должен быть выполнен.

58
ответ дан Aristotle Pagaltzis 22 сент. '08 в 20:28
источник поделиться

Способ создания папки журнала Ruby on Rails:

mkdir log && touch log/.gitkeep && git add log/.gitkeep

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

Логфайлы могут быть сохранены путем выпуска,

echo log/dev.log >> .gitignore

но вы, наверное, это знали.

29
ответ дан Thomas E 22 окт. '12 в 16:24
источник поделиться

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
27
ответ дан lesmana 06 мая '11 в 18:45
источник поделиться

ПРЕДУПРЕЖДЕНИЕ: эта настройка не работает, как оказалось. Извините за неудобства.

Оригинальное сообщение ниже:

Я нашел решение, играя с Git внутренними элементами!

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

    $ mkdir path/to/empty-folder
    
  • Добавьте его в индекс, используя команду сантехника и пустое дерево SHA-1:

    $ git update-index --index-info
    040000 tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904    path/to/empty-folder
    

    Введите команду и введите вторую строку. Нажмите Enter, а затем Ctrl + D, чтобы завершить ввод. Примечание: формат является типом режима [ПРОБЕЛ] [ПРОБЕЛ] SHA-1hash [TAB] (вкладка важна, форматирование ответа не сохраняет ее).

  • Что это! Ваша пустая папка указана в вашем индексе. Все, что вам нужно сделать, это зафиксировать.

Это решение короткое и, по-видимому, прекрасно работает (см. EDIT!), но его не так просто запомнить...

Пустое дерево SHA-1 можно найти, создав в него новый пустой репозиторий Git, cd и выпустив git write-tree, который выводит пустое дерево SHA-1.

EDIT:

Я использую это решение, так как нашел его. Кажется, он работает точно так же, как создание подмодуля, за исключением того, что ни один модуль не определен нигде. Это приводит к ошибкам при выпуске git submodule init|update. Проблема в том, что git update-index перезаписывает часть 040000 tree в 160000 commit.

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

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

23
ответ дан ofavre 20 янв. '12 в 18:50
источник поделиться

Возможно, добавление пустого каталога похоже на то, что это будет путь наименьшего сопротивления, потому что у вас есть сценарии, которые ожидают, что каталог будет существовать (возможно, потому, что это цель для сгенерированных двоичных файлов). Другим подходом было бы изменить ваши сценарии, чтобы создать каталог по мере необходимости.

mkdir --parents .generated/bin ## create a folder for storing generated binaries
mv myprogram1 myprogram2 .generated/bin ## populate the directory as needed

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

ln -sf .generated/bin bin
git add bin

Если вы хотите очистить исходное дерево, вы можете просто:

rm -rf .generated ## this should be in a "clean" script or in a makefile

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

Вы можете игнорировать все созданные вами файлы, добавив в корневой каталог .gitignore следующее:

.generated
20
ответ дан nobar 26 окт. '11 в 19:33
источник поделиться

Скажем, вам нужен пустой каталог с именем tmp:

$ mkdir tmp
$ touch tmp/.gitignore
$ git add tmp
$ echo '*' > tmp/.gitignore
$ git commit -m 'Empty directory' tmp

Другими словами, вам нужно добавить файл .gitignore в индекс, прежде чем вы сможете сказать Git игнорировать его (и все остальное в пустом каталоге).

18
ответ дан m104 08 окт. '08 в 3:13
источник поделиться

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

Вот почему я решил написать инструмент с открытым исходным кодом, который может автоматически управлять созданием/удалением таких файлов-заполнителей. Он написан для платформы .NET и работает под Mono (.NET для Linux) и Windows.

Просто взгляните на: http://code.google.com/p/markemptydirs

14
ответ дан Jonny Dee 24 июля '09 в 1:33
источник поделиться

Вы не можете и, к сожалению, никогда не сможете. Это решение, сделанное самим Линусом Торвальдом. Он знает, что хорошо для нас.

Там есть что-то, что я читал однажды.

Я нашел Re: Пустые директории.., но, возможно, есть еще один.

Вы должны жить с обходными решениями... к сожалению.

12
ответ дан user2334883 15 марта '15 в 21:17
источник поделиться

Когда вы добавляете файл .gitignore, если вы собираетесь помещать в него какое-либо количество контента (которое вы хотите игнорировать Git), вам может понадобиться добавить одну строку со звездочкой * в убедитесь, что вы случайно не добавили проигнорированный контент.

10
ответ дан Michael Johnson 24 сент. '08 в 9:43
источник поделиться

Мне нравятся ответы @Artur79 и @mjs, поэтому я использовал комбинацию обоих и сделал это стандартом для наших проектов.

find . -type d -empty -exec touch {}/.gitkeep \;

Однако только небольшая часть наших разработчиков работает на Mac или Linux. Много работы над Windows, и я не мог найти эквивалентный простой однострочный набор, чтобы выполнить то же самое. Некоторым повезло, чтобы установить Cygwin по другим причинам, но предписание Cygwin просто для этого показалось излишним.

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

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="Gitkeep" basedir="." default="keep">
    <!--Apply to all subdirs of this dir-->
    <target name="keep" description="-> Add a .gitkeep file to all empty subdir of this dir.">

        <!--Create a ref to all the subdirs in the tree of this dir-->
        <dirset id="dirs.ref" dir="./" includes="**/*"/>
        <!--Create a list of the subdirs under this dir-->
        <property name="dirs.list" refid="dirs.ref" />

        <!--For each subdir-->
        <for list="${dirs.list}" delimiter=";" param="dir">
            <sequential>
                <!--If the subdir is empty this target will add a .gitkeep file to it-->
                <antcall target="gitkeep" inheritall="false">
                    <param name="dir" value="@{dir}"/>
                </antcall>
            </sequential>
        </for>
    </target>

    <!--Add a .gitkeep file to a directory if it empty-->
    <target name="gitkeep" description="-> Add a .gitkeep file to a specific subdir of this dir. Use -Ddir=relative/path/to/dir">

        <!--Create a ref of the files inside this dir-->
        <fileset dir="${dir}" id="contents.ref"/>

        <!--Create a path to the contents of this directory, ONLY if it not empty-->
        <pathconvert refid="contents.ref" property="contents.path" setonempty="false"/>

        <if>
            <!--If the dir is empty create the .gitkeep file-->
            <not><isset property="contents.path"/></not>
            <then>
                <!--Create the .gitkeep file-->
                <echo message="Version this dir in Git even if its empty." file="./${dir}/.gitkeep" force="true" append="false"/>
            </then>
        </if>
    </target>
</project>

Теперь я могу просто запустить

ant -f gitkeep.xml

И это создает файл .gitkeep в любом пустом поддире. Даже на Windows:) Примечание. Для этого файла сборки требуется Ant Contrib jar.

Я продолжаю работать над этой концепцией здесь.

https://github.com/mig82/gitkeep

9
ответ дан Mig82 15 мая '17 в 22:08
источник поделиться

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

ruby -e 'require "fileutils" ; Dir.glob(["target_directory","target_directory/**"]).each { |f| FileUtils.touch(File.join(f, ".gitignore")) if File.directory?(f) }'

Я застрял в Rakefile для легкого доступа.

8
ответ дан Peter Hoeg 19 апр. '11 в 17:10
источник поделиться

Решение Jamie Flournoy отлично работает. Вот немного расширенная версия, чтобы сохранить .htaccess:

# Ignore everything in this directory
*
# Except this file
!.gitignore
!.htaccess

С помощью этого решения вы можете зафиксировать пустую папку, например /log, /tmp или /cache, и папка останется пустой.

8
ответ дан Roman 22 июня '14 в 16:06
источник поделиться

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

function check_page_custom_folder_structure () {
    if (!is_dir(TEMPLATEPATH."/page-customs"))
        mkdir(TEMPLATEPATH."/page-customs");    
    if (!is_dir(TEMPLATEPATH."/page-customs/css"))
        mkdir(TEMPLATEPATH."/page-customs/css");
    if (!is_dir(TEMPLATEPATH."/page-customs/js"))
        mkdir(TEMPLATEPATH."/page-customs/js");
}

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

7
ответ дан Mild Fuzz 04 апр. '11 в 13:06
источник поделиться

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

Файл может быть назван и содержать все, что угодно, но большинство людей использует пустой файл с именем .gitkeep (хотя некоторые люди предпочитают VCS-агностик .keep).

Префикс . обозначает его как скрытый файл.

Еще одна идея - добавить файл README, объясняющий, для чего будет использоваться каталог.

7
ответ дан Zaz 27 апр. '15 в 1:54
источник поделиться

Вот хак, но забавно, что он работает (Git 2.2.1). Подобно тому, что предложил @Teka, но легче запомнить:

  • Добавить подмодуль в любой репозиторий (git submodule add path_to_repo)
  • Это добавит папку и файл .submodules. Зафиксируйте изменения.
  • Удалить .submodules файл и зафиксировать изменения.

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

fatal: Недействительное имя объекта b64338b90b4209263b50244d18278c0999867193

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

7
ответ дан Stanislav Bashkyrtsev 24 дек. '14 в 13:24
источник поделиться

Вы не можете. Это преднамеренное дизайнерское решение Git. В принципе, целью системы управления исходным кодом, такой как Git, является управление исходным кодом, а пустые каталоги не являются исходным кодом. Git также часто описывается как трекер контента, и опять же, пустые каталоги не довольны (на самом деле наоборот), поэтому они не отслеживаются.

5
ответ дан Jörg W Mittag 22 сент. '08 в 22:50
источник поделиться

Git не может добавить полностью пустую папку. Таким образом, вам понадобится что-то вроде .keep или .gitkeep или README или README.md или любого пользовательского именованного пустого файла.

Каталоги добавляются автоматически при добавлении в них файлов. То есть каталоги никогда не должны добавляться в репозиторий и не отслеживаются сами по себе с помощью индекса git.

git add <dir> добавит файлы в каталог.

создание папки в репозитории github

  • <dir>/ для добавления dir.
  • ../ для перехода в родительский каталог.

Опция командной строки: touch .gitkeep

4
ответ дан abe312 02 дек. '17 в 21:36
поделиться

Иногда вам приходится иметь дело с плохими письменными библиотеками или программным обеспечением, которым нужен "настоящий" пустой и существующий каталог. Помещение простого .gitignore или .keep может привести к их повреждению и вызвать ошибку. В этих случаях может помочь следующее, но нет гарантии...

Сначала создайте необходимый каталог:

mkdir empty

Затем вы добавляете сломанную символическую ссылку в этот каталог (но в любом другом случае, чем описанный выше пример использования, используйте README с объяснением):

ln -s .this.directory empty/.keep

Чтобы игнорировать файлы в этом каталоге, вы можете добавить их в свой корень .gitignore:

echo "/empty" >> .gitignore

Чтобы добавить проигнорированный файл, используйте его параметр:

git add -f empty/.keep

После фиксации у вас сломанная символьная ссылка в вашем индексе и git создает каталог. Сломанная ссылка имеет некоторые преимущества, поскольку она не является обычным файлом и не указывает на обычный файл. Поэтому он даже подходит к части вопроса "(который не содержит файлов" ), а не по смыслу, но по смыслу, я думаю:

find empty -type f

Эти команды показывают пустой результат, так как в этом каталоге нет файлов. Поэтому большинство приложений, которые получают все файлы в каталоге, обычно не видят этой ссылки, по крайней мере, если они делают "файл существует" или "читабельны". Даже некоторые скрипты не найдут там никаких файлов:

$ php -r "var_export(glob('empty/.*'));"
array (
  0 => 'empty/.',
  1 => 'empty/..',
)

Но я настоятельно рекомендую использовать это решение только в особых обстоятельствах, хорошо написанный README в пустом каталоге, как правило, является лучшим решением. (И я не знаю, работает ли это с файловой системой Windows...)

4
ответ дан Trendfischer 02 июня '16 в 19:42
источник поделиться

Добавление еще одной опции в сражение.

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

Формат, как уже упоминалось, следующий:

*
!.gitignore

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

$ echo "*" > .gitignore && echo '!.gitignore' >> .gitignore && git add .gitignore

Я сам, у меня есть оболочка script, которую я использую для этого. Назовите script все, что вы хотите, и добавьте его где-нибудь в свой путь включения или обратитесь к нему напрямую:

#!/bin/bash

dir=''

if [ "$1" != "" ]; then
    dir="$1/"
fi

echo "*" > $dir.gitignore && \
echo '!.gitignore' >> $dir.gitignore && \
git add $dir.gitignore

С помощью этого вы можете выполнить его из каталога, который вы хотите добавить, или ссылаться на каталог как на первый и только на параметр:

$ ignore_dir ./some/directory

Еще один вариант (в ответ на комментарий от @GreenAsJade), если вы хотите отслеживать пустую папку, в которой МОЖЕТ содержать отслеживаемые файлы в будущем, но пока пусто, вы можете опустить * из .gitignore и проверить это. В принципе, весь файл говорит: "Не игнорируйте меня", но в противном случае каталог пуст и отслеживается.

Ваш файл .gitignore будет выглядеть так:

!.gitignore

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

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

3
ответ дан Mike 26 мая '16 в 4:18
источник поделиться

Если вы хотите добавить пустой каталог в репозиторий Git, вы можете сделать одно. Создайте файл с именем .gitignore, а затем запишите его внутри него:

/directory/*
!.gitignore

Первая строка сообщает Git игнорировать все в этом каталоге. Вторая строка сообщает Git не игнорировать файл .gitignore.

3
ответ дан shiminsh 02 дек. '17 в 21:36
поделиться

Если вы хотите добавить папку, в которой будет храниться много переходных данных в нескольких семантических каталогах, то один из подходов состоит в том, чтобы добавить что-то вроде этого в ваш root .gitignore...

/app/data/**/*.* !/app/data/**/*.md

Затем вы можете зафиксировать описательные файлы README.md(или пустые файлы, это не имеет значения, если вы в этом случае можете настроить их однозначно как с помощью *.md), чтобы гарантировать, что все каталоги остаются часть репо, но файлы (с расширениями) игнорируются. ОГРАНИЧЕНИЕ: . недопустимы в именах каталогов!

Вы можете заполнить все эти каталоги файлами xml/images и т.д. и добавить дополнительные каталоги под /app/data/ с течением времени, которые потребуются для хранения вашего приложения (с файлами README.md, предназначенными для записи в описании что для каждого каталога хранения точно).

Нет необходимости дополнительно изменять ваш .gitignore или децентрализовать, создав новый .gitignore для каждого нового каталога. Наверное, это не самое умное решение, но оно красноречиво и всегда работает для меня. Ницца и просто!;)

введите описание изображения здесь

3
ответ дан ajmedway 11 мая '17 в 16:36
источник поделиться

Просто добавьте empty.txt в каталог.

2
ответ дан Daniel Alexiuc 02 дек. '17 в 21:36
поделиться

Добавьте файл в пустую папку и назовите его PlaceHolder.

2
ответ дан Amir Saniyan 02 дек. '17 в 21:36
поделиться
  • 1
  • 2

Другие вопросы по меткам