下記のようにすると、現在チェックアウトしているブランチの最新 (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