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

Tags of current page