下記のようにすると、現在チェックアウトしているブランチの最新 (HEAD) のコードを zip や tar アーカイブファイルとしてバックアップできます。
バックアップには .git ディレクトリ(リポジトリ本体)は含まれないため、あくまでソースコードを配布するときなどに使用できるコマンドです。
$ git archive -o backup.zip HEAD
あるいは
$ git archive --format=zip HEAD > backup.zip
$ git archive --format=tar HEAD | gzip > backup.tar.gz
例えば、タグ REL-1.2.34 のついたバージョンのソースコードのアーカイブを作成するには、下記のようにします(最新を表す HEAD の指定をタグ名に置き換えるだけです)。
$ git archive -o backup.zip REL-1.2.34
git archive コマンドによって作成されたアーカイブファイルを展開すると、デフォルトではフラットにファイル群が展開されてしまいます。
展開時にディレクトリを作成して、その中にファイル群を展開するようにするには、下記のようにディレクトリ名を示す --prefix オプションを指定します。
$ git archive --format=zip --prefix=myapp/ HEAD > myapp-1.0.zip
上記のようにすると、myapp-1.0.zip を展開したときに、myapp というディレクトリの下にファイル群が展開されるようになります。
--prefix オプションで指定するディレクトリ名は、最後にスラッシュを付けることに注意してください。
これを忘れると、各ファイルのプレフィックスとしてその名前が付けられてしまいます。
ある特定のディレクトリ以下のソースコードだけを含んだアーカイブを作成することもできます。
次の例では、feature/timer ディレクトリ以下に含まれているソースコードだけをアーカイブしています。
git archive --format=zip HEAD:feature/timer > timer-1.0.zip