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

139

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

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

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

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

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

    
задан Tom 28.02.2011 в 21:38
источник

4 ответа

167

Правильное выражение: -x *.git* , поэтому полная команда должна быть:

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

Объяснение из Ссылка :

  

Правильное заклинание

zip -9 -r --exclude=*.svn*  foo.zip [directory-to-compress]
     

Вы также можете добавить --exclude=*.DS_Store* , чтобы исключить раздражающие файлы метаданных каталога Mac OS X.

     

Обратите внимание, что выражение, переданное в --exclude , использует весь исходный путь относительного каталога в качестве исходной строки для сопоставления. Таким образом, .svn/* сам по себе не работает; символ подстановки гарантирует, что он соответствует каталогам .svn в любом месте дерева каталогов.

    
ответ дан Isaiah 28.02.2011 в 22:01
источник
71

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

    
ответ дан Blair 14.12.2011 в 12:08
19

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

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

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

  

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

    
ответ дан Priit Tamboom 14.12.2011 в 11:13
3

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

git archive --format=zip HEAD -o bitvolution.zip
    
ответ дан Tatu Lahtela 14.12.2011 в 12:12