git archive 를 사용해서 폴더를 .git 제외하고 tar 나 zip 으로 묶기
git 으로 관리하고 있는 폴더를 zip 이나 tar 등으로 압축해서 전달해야 할 경우 생길수 있습니다.
이때 바로 tar 나 zip 으로 묶으면 .git 도 포함되므로 용량이 커지고 의도하지 않게 소스의 변경 내역이 포함될 수 있습니다.
이럴 경우 git archive 명령을 사용하면 .git 폴더를 제외하고 아카이브할 수 있습니다.
많이 쓰는 옵션으로는 아카이브 포맷을 지정하는 --format 옵션과 출력 파일을 지정하는 -o 가 있습니다.
지원하는 포맷 목록을 보려면 -l, --list 옵션을 사용하면 됩니다.
$ git archive -l tar tgz tar.gz zip
아래 명령은 마스터 브랜치를 zip 형식으로 lesstif.zip 파일로 아카이빙 합니다.
$ git archive --format=zip master -o ../lesstif.zip
특정 태그(버전 등)를 아카이빙할 경우 구분을 위해 접두사를 붙이고 싶을 수 있습니다.
이럴 경우 --prefix 접두사 옵션을 사용하면 모든 pathname 에 접두사를 붙여줍니다.
아래는 v1.0 태그를 tar.gz 으로 아카이빙하며 접두사로 v1.0-를 붙이는 예제입니다.
$ git archive --format=tar.gz --prefix=v1.0- v1.0 -o lesstif-v1.0.tar.gz
git archive 명령어 사용시 git 에서 버전 관리중이지 않은 파일들(예: .gitignore 에 있는 파일)은 제외되며 버전 관리중이라도 unstaged 상태일 경우 브랜치 내 마지막 상태로 아카이빙 됩니다.