Я пытаюсь создать zip-файл из папки и хочу исключить подпапку .git
из полученного zip-файла.
Я перешел в родительскую папку той, которую хочу сжать ( называется bitvolution ), и я делаю:
zip -r bitvolution.zip bitvolution -x ".git"
Но это не исключает 112] подпапка.
Я пробовал различные комбинации, -x .git*
, -x \.git/*
, -x .git/\*
, -x \.git/\*
. Я также попытался использовать полный путь для аргумента исключения ... но просто не получил его.
Корректное выражение -x *.git*
, таким образом, полная команда должна быть:
zip -r bitvolution.zip bitvolution -x *.git*
Объяснение из http://selfsolved.com/problems/zip-command-exclude-svn-director:
Корректное колдовство
zip -9 -r --exclude=*.svn* foo.zip [directory-to-compress]
Можно также добавить a
--exclude=*.DS_Store*
для исключения раздражающего каталога Mac OS X отображают файлы метаданных.Заметьте, что выражение передало
--exclude
использует весь исходный относительный путь к каталогу в качестве исходной строки для соответствия против. Так.svn/*
отдельно не работает; подстановочный символ впереди гарантирует, что соответствует.svn
каталоги где угодно в дереве каталогов.
Если вы пытаетесь заархивировать проект, который хранится в Git, используйте команду git archive
. Из исходного каталога:
git archive -o bitvolution.zip HEAD
Вы можете использовать любой коммит или идентификатор тега вместо HEAD
для архивирования проекта в определенный момент.
Если вы хотите добавить префикс (например, папку верхнего уровня) для каждого файла:
git archive -o bitvolution.zip --prefix=bitvolution/ HEAD
Вы также можете настроить уровень сжатия от 0 (без сжатия) до 9 (максимальное сжатие) включительно, например
git archive -o bitvolution.zip -9 HEAD
Другие варианты см. на странице справки (git help archive
).
Предполагая, что на компьютере, на котором вы это делаете, установлен git, вы также можете использовать сам git для создания своего архива.
git archive --format=zip HEAD -o bitvolution.zip
Я добавил обратную косую черту:
zip -r bitvolution.zip bitvolution -x \*.git\*
Справочная страница о обратной косой черте:
Обратная косая черта избегает подстановки имени файла оболочки, так что сопоставление имен выполняется zip во всех каталогах. уровни.
BLOCKQUOTE>
Если вы используете zsh, команда должна выглядеть следующим образом:
zip -r target_name.zip source_dir -x '/*.git/*'
Если вы используете: zip -r target_name.zip source_dir -x /*.git/*
. без 'regex' zsh будет обрабатываться перед запуском zip. Вы получите сообщение об ошибке:
zsh: no matches found: /*.git/*
Используйте следующий формат, если Вы хотите проигнорировать всю папку.
, Например, для игнорирования каждого node_modules
папка, в каждой конечной точке:
zip -r API.zip API/* -x */node_modules/*
Вот пример того, что я использую:
zip -r workspace.zip workspace -x '*/.git/*' -x '*/.DS_Store/*' -x '*/build/*'