Как мне сжать папку, но исключить подпапку .git

Я пытаюсь создать zip-файл из папки и хочу исключить подпапку .git из полученного zip-файла.

Я перешел в родительскую папку той, которую хочу сжать ( называется bitvolution ), и я делаю:

zip -r bitvolution.zip bitvolution -x ".git"

Но это не исключает 112] подпапка.

Я пробовал различные комбинации, -x .git*, -x \.git/*, -x .git/\*, -x \.git/\*. Я также попытался использовать полный путь для аргумента исключения ... но просто не получил его.

200
задан 28 February 2011 в 23:38

7 ответов

Корректное выражение -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 каталоги где угодно в дереве каталогов.

239
ответ дан 28 February 2011 в 23:38

Если вы пытаетесь заархивировать проект, который хранится в 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).

0
ответ дан 28 February 2011 в 23:38

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

git archive --format=zip HEAD -o bitvolution.zip
0
ответ дан 28 February 2011 в 23:38

Я добавил обратную косую черту:

zip -r bitvolution.zip bitvolution -x \*.git\*

Справочная страница о обратной косой черте:

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

0
ответ дан 28 February 2011 в 23:38

Если вы используете 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/*
0
ответ дан 28 February 2011 в 23:38

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

, Например, для игнорирования каждого node_modules папка, в каждой конечной точке:

zip -r API.zip API/* -x */node_modules/*
0
ответ дан 22 November 2019 в 22:44

Вот пример того, что я использую:

zip -r workspace.zip workspace -x '*/.git/*' -x '*/.DS_Store/*' -x '*/build/*'
3
ответ дан 6 December 2020 в 02:18

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

Похожие вопросы: