177
146

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GitAdvent Calendar 2015

Day 20

Git リポジトリの内容を zip ファイルにする

Last updated at Posted at 2015-12-20

git clone したフォルダを単純に zip すると、.git フォルダが含まれてしまったり、普段は .gitignore などで無視しているファイルが含まれてしまったりします。

Git リポジトリの内容だけを取り出して zip ファイルにするには、git archive コマンドが便利です。

参考:GitHub だと、Git のタグをつけておくことで、git archive で生成したファイルと同様の zip ファイルが Release ページからダウンロードできます。

基本的な使い方

Git リポジトリの内容を zip ファイルにするには次のようにします。HEAD の部分は、タグ名、ブランチ名、コミットID、などが指定できます。

git archive HEAD --output=hoge.zip

中身を特定のフォルダ以下に入れたい場合は、次のように --prefix オプションを使います。このとき、フォルダ名の後ろに必ず / をつける必要があります。

git archive HEAD --prefix=hogedir/ --output=hoge.zip

(補足 : --prefix オプションは、本来は各ファイルパスにプレフィックス文字列を追加するオプションです。この文字列にフォルダ区切り文字を入れることで、特定のフォルダを指定しているのと同じ効果となります)

一部のフォルダだけを取り出す

Git リポジトリの hogedir フォルダだけを zip ファイルにするには次のようにします。

なお、特定のフォルダ以下に入れたい場合は上述の --prefix オプションが使えます。

パターン1

git archive HEAD:hogedir --output=hoge.zip

この場合、hogedir フォルダそのものは zip には含まれません。hogedir フォルダの中身が zip に含まれます。

パターン2

git archive HEAD hogedir --output=hoge.zip

この場合、hogedir フォルダ自体も zip に含まれます。

注意点

git archive で生成した zip ファイルを展開すると、各ファイルに実行属性がついてしまっていることが分かります。これは残念ながら git archive の仕様のようです。

ファイルの属性をきちんと保ちたい場合は、アーカイブを tar ファイルで作成するのが良さそうです。

git archive HEAD --output=hoge.tar.gz
git archive HEAD --output=hoge.tar.bz2
177
146
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
177
146

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?