자식 저장소 인 폴더를 tar로 만들면 .git
관련 파일 을 포함시키지 않고 할 수 있습니까? 그렇지 않다면 어떻게 명령을 통해 그렇게 할 수 있습니까?
답변
먼저 살펴보십시오 git help archive
. archive
git 추적 파일 만 포함하는 아카이브를 만들 수있는 git 명령입니다. 아마 당신이 찾고있는 것. 매뉴얼 페이지 끝에 나열된 예는 다음과 같습니다.
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
답변
가장 간단한 답변 : 추가 --exclude-vcs
. 여기에는 모든 버전 제어 시스템 디렉토리가 제외됩니다.
개인적으로 사용합니다
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
--exclude-vcs
명령의 끝에를 추가 하기 만하면됩니다.
답변
아카이브가 git에 의해 추적 된 파일을 포함하지만 git 저장소 자체 또는 생성되거나 추적되지 않은 파일은 포함하지 않으려면을 사용하십시오git archive
.
.git
Linux, FreeBSD 또는 OSX 또는 Cygwin에서 특별히 제외하고 다른 모든 것을 포함 하려는 경우 tar에는 디렉토리를 제외하는 간단한 옵션이 있습니다.
tar -c --exclude .git -f - foo | gzip >foo.tgz
GNU tar (예 : Linux 또는 Cygwin)를 사용하면이 값을로 줄일 수 있습니다 tar czf foo.tgz --exclude .git foo
.
아카이브를 작성하는 POSIX 방법은입니다 pax
.
pax -w -t -s '!.*/\.git$!!' -s '!.*/\.git/.*!!' foo | gzip >foo.tgz
답변
답변 덕분 에 내 질문 중 하나에 대해 다른 해결책을 찾았습니다. 완성도를 높이기 위해 다음을 사용하는 솔루션이 있습니다 find
.
find . -path './.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
.git
(하위) + 폴더 내에서 가능한 폴더 를 제외 하려면 :
find . -path '*/.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
후자는 또한 다음을 통해 달성 될 수 있습니다.
find . -type d -name '.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
find
예를 들어 수정 날짜, 권한 등 의 다른 필터링 기술을 사용할 수 있다면 매우 편리합니다 .
(자주 잘 형성 파일 이름이 가정으로, 그렇지 않으면 널 (null)이 의미 할 수있다 구분자로 바이트를 사용할 필요 -print0
를위한 find
과 --null
에 대한 tar
지원합니다.)