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

StackOverflow https://stackoverflow.com/questions/115983

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Тогда вам не нужно правильно отдавать приказы, как это нужно делать в м104. решение.

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

Изготовление @GreenAsJadeкомментарий пользователя постоянный:

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

Другие советы

Вы не можете.См. Часто задаваемые вопросы по Git.

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

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

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

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

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

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

touch .keep

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

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

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

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

Перво-наперво:

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

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

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

Некоторые предлагаемые обходные пути

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

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

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

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

.gitдержать подход

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

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

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

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

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

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

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

Принятие

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

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

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

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

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

А Рубин на рельсах способ создания папки журнала:

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

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

Файлы журналов можно сохранить, выдав:

echo log/dev.log >> .gitignore

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

Git не отслеживает пустые каталоги.См. Часто задаваемые вопросы по Git для получения дополнительных объяснений.Предлагаемый обходной путь — поставить .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

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

Исходное сообщение ниже:

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

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

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

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

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

  4. Вот и все!Ваша пустая папка находится в вашем index.Все, что вам нужно сделать, это совершить.

Это решение короткое и, по-видимому, работает нормально (см. РЕДАКТИРОВАНИЕ!), но запомнить это не так-то просто...

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

РЕДАКТИРОВАТЬ:

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

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

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

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

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

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

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

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

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

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

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

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

Где-то где-то есть напыщенная речь, которую я когда-то читал.

я нашел Ре:Пустые каталоги.., но возможно есть еще один.

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

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

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

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

Изменить для лучшего решения

Итак, поскольку у большинства наших разработчиков уже есть Муравей После установки, первое, о чем я подумал, — это собрать файл сборки 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.

Надеюсь, вы найдете это полезным.

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

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

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

Я поместил это в Rakefile для облегчения доступа.

Решение Джейми Флурной прекрасно работает.Вот немного улучшенная версия, чтобы сохранить .htaccess :

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

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

Я всегда создаю функцию для проверки желаемой структуры папок и создаю ее для себя в проекте.Это позволяет обойти эту проблему, поскольку пустые папки хранятся в 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, но я уверен, что большинство языков поддерживают ту же функциональность, а поскольку создание папок осуществляется приложением, папки всегда будут там.

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

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

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

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

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

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

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

Префикс . помечает его как скрытый файл.

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

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

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

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

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

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

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

enter image description here

Добавляем еще один вариант в бой.

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

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

*
!.gitignore

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

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

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

#!/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 цель.В противном случае кто-то в будущем может подумать об его удалении.Может помочь, если вы разместите комментарий над строкой.

Иногда приходится иметь дело с плохо написанными библиотеками или программным обеспечением, которым нужен «настоящий» пустой и существующий каталог.Помещая простой .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...)

Вы можете сохранить этот код как create_readme.php и запустить PHP код из корневого каталога вашего проекта Git.

> php create_readme.php

Он добавит файлы README во все пустые каталоги, чтобы затем эти каталоги были добавлены в индекс.

<?php
    $path = realpath('.');
    $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path),       RecursiveIteratorIterator::SELF_FIRST);
    foreach($objects as $name => $object){
        if ( is_dir($name) && ! is_empty_folder($name) ){
            echo "$name\n" ;
            exec("touch ".$name."/"."README");
        }
    }

    function is_empty_folder($folder) {
        $files = opendir($folder);
        while ($file = readdir($files)) {
            if ($file != '.' && $file != '..')
                return true; // Not empty
            }
        }
?>

Тогда делай

git commit -m "message"
git push

Иногда у меня есть репозитории с папками, в которых всегда будут содержаться только файлы, которые считаются «контентом» — то есть это не те файлы, версии которых меня волнуют, и поэтому их никогда не следует фиксировать.С помощью файла Git .gitignore вы можете игнорировать целые каталоги.Но бывают случаи, когда наличие папки в репозитории было бы полезно.Вот отличное решение для удовлетворения этой потребности.

Раньше я помещал файл .gitignore в корень моего репозитория, а затем исключал папку, например:

/app/some-folder-to-exclude
/another-folder-to-exclude/*

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

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

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

*
!.gitignore

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

Самый простой способ сделать это — добавить .gitkeep файл в каталог, который вы хотите (в настоящее время) оставить пустым.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top