まくまくGitノート
ソースコードのアーカイブを作成する
2010-07-17

最新のソースコードのアーカイブを作成する

下記のようにすると、現在チェックアウトしているブランチの最新 (HEAD) のコードを zip や tar アーカイブファイルとしてバックアップできます。 バックアップには .git ディレクトリ(リポジトリ本体)は含まれないため、あくまでソースコードを配布するときなどに使用できるコマンドです。

zip ファイル (backup.zip) を作成する場合

$ git archive -o backup.zip HEAD
あるいは
$ git archive --format=zip HEAD > backup.zip

tar.gz ファイル (backup.tar.gz) を作成する場合

$ 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
2010-07-17