폴더를 압축하고 .git 하위 폴더를 제외시키는 방법


194

폴더에서 zip 파일을 만들려고하는데 .git결과 zip 파일에서 하위 폴더 를 제외하고 싶습니다 .

압축하려는 비트 폴더 ( bitvolution ) 의 상위 폴더로 이동했으며 다음을 수행하고 있습니다.

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

그러나 .git하위 폴더 는 제외되지 않습니다 .

나는 다양한 조합을 시도했습니다 -x .git*, -x \.git/*, -x .git/\*, -x \.git/\*. 또한 exclude 인수에 전체 경로를 사용하려고 시도했지만 도착하지 않았습니다.

답변:


232

올바른 표현식은 -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]


--exclude=*.DS_Store*성가신 Mac OS X 디렉토리 디스플레이 메타 데이터 파일을 제외하도록 a 를 추가 할 수도 있습니다 .

전달 된 표현식 --exclude은 전체 원본 상대 디렉토리 경로를 일치시킬 원본 문자열로 사용합니다. 따라서 .svn/*그 자체로는 작동하지 않습니다. 앞에있는 와일드 카드 문자 .svn는 디렉토리 트리의 어느 디렉토리 에나 일치하는지 확인합니다 .


20
내가 좋아하는 따옴표의 글로브를 포장 또는 백 슬래시 별표를 탈출했다 zip --exclude '*.git*' -r directory.zip directoryzip --exclude \*.git\* -r directory.zip directory
드미트리 Minkovsky에게

6
something.git라는 다른 파일을 잃어 버릴 염려가 있다면을 사용할 수도 있습니다 --exclude /.git*.
Erin 전화

4
: zsh을 내가 백 슬래시를 추가했다-x \*.git\*
DmitrySandalov

2
zsh에서 백 슬래시와 따옴표에 대한 선호되는 대안 :noglob zip -r out.zip someFolder -x *someExcludedFolder*
Sébastien

타르와 함께 사용하는 방법? tar 명령으로 작동하지 않습니다.
RN Kushwaha

123

Git에 저장된 프로젝트를 압축하려는 경우 git archive명령을 사용하십시오 . 소스 디렉토리 내에서 :

git archive -o bitvolution.zip HEAD

HEAD특정 시점에 프로젝트를 아카이브하기 위해 커밋 또는 태그 ID를 사용할 수 있습니다 .

모든 파일에 접두사 (예 : 최상위 폴더)를 추가하려는 경우 :

git archive -o bitvolution.zip --prefix=bitvolution/ HEAD

예를 들어 0 (압축 없음)과 9 (최대 압축) 사이의 압축 수준을 조정할 수도 있습니다.

git archive -o bitvolution.zip -9 HEAD

다른 옵션에 대해서는 도움말 페이지 ( git help archive)를 참조하십시오 .


25
여기에는 git 폴더가 포함되어있을뿐만 아니라 gitignore 파일에있는 것도 제외됩니다. 당신은 공감대를 얻습니다.
JoeMoe1984

1
내가하고자했던 것!
Bjarte

나는 파티에 늦었지만 이것은 절대적으로 나를 날려 버렸다. 좋은 답변입니다!
Tom

왜 이것이 최선의 대답이 아닌지 궁금합니다
nabtron

나를 위해 이것은 오늘 가장 큰 TIL이었습니다 ...
Shawn Cicoria

27

백 슬래시를 추가했습니다.

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

백 슬래시에 대한 매뉴얼 페이지 :

백 슬래시는 쉘 파일 이름 대체를 피하므로 이름 일치는 모든 디렉토리 레벨에서 zip으로 수행됩니다.


디렉토리를 제외하기 위해 Ubuntu 14.04에서 슬래시 포크가있는 별표를 추가
Dimitry K

6

이 작업을 수행하는 컴퓨터에 git이 설치되어 있다고 가정하면 git 자체를 사용하여 아카이브를 만들 수도 있습니다.

git archive --format=zip HEAD -o bitvolution.zip

2

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/*

감사! 그것이 Windows의 Ubuntu에서 Bash를 사용하여 저에게 효과적이었습니다.
Adriano Monecchi

이 패턴이 어떻게 작동하는지 이해하지 못했지만 zsh에서 나를 위해 일했습니다.
서명
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.