git archive 使い方
zip のアーカイブを作る
zip で HEAD のアーカイブを作るには
git archive --format=zip HEAD -o repo.zip
とする。このとき、アーカイブのファイルを特定のディレクトリに入れるには 「–prefix」オプションで指定する。
git archive --format=zip --prefix=dir/ HEAD -o repo.zip
とすると、アーカイブの中に dir ディレクトリが作られ、 そのなかにファイルが入っている。
tar.gz、tar.bz2 のアーカイブを作る
zip の場合とは違ってパイプで gzip などに送って圧縮する。
git archive --format=tar --prefix=dir/ HEAD | gzip > repo.tar.gz
git archive --format=tar --prefix=dir/ HEAD | bzip2 > repo.tar.bz2
git archive --format=tar --prefix=dir/ HEAD | xz > repo.tar.xz
特定のファイル、ディレクトリだけをアーカイブする
ファイル、ディレクトリのパスを指定すれば良い。
git archive --format=zip --prefix=dir/ HEAD file.txt directory -o repo.zip
アーカイブは dir ディレクトリの中に file.txt と directory が入っているアーカイブができる。
コミットを指定のディレクトリに展開する
git-buildpackage のコードを見ると tar でアーカイブを作り、 パイプで tar に渡して指定のディレクトリに展開していた。
mkdir output
git archive --format=tar HEAD | tar -C output -xf -
参考
- man git-archive