git コマンドで不要ファイルを除いて zip 圧縮する

  • Git

git 管理しているファイルを zip 圧縮する必要があり、手動でいらないファイルを除いて圧縮していました。ですが調べたらコマンドでできるとのことだったので、手順をまとめました。

圧縮不要のファイルを設定する

zip アーカイブを作る際に、開発用ファイルなどの zip にする必要のないファイルがあるかもしれません。

git には.gitattributesという設定ファイルでファイルに対していろいろな属性値をつけることができますが、その設定の一つにgit archiveコマンドを使った際のアーカイブ除外(export-ignore)を設定できます。

(もし不要ファイルがない場合はこのセクションを飛ばしてください)

.gitattributes

ディレクトリ名 属性値 属性値 ... という形で設定します。今回は除外設定なのでファイル名 export-ignoreを記述していきます。

下記は一例です。

/_src export-ignore
/.* export-ignore
  • /_src … ルートにある_src配下のファイル全て除外
  • /.* … ルートにある.(ドット)から始まるファイル全て除外

特定のブランチを zip 圧縮する

圧縮にはgit archiveコマンドを実行します。

git archive ブランチ名 --format=zip -o 出力ファイル名
  • --formattarzipが選べます。未指定の場合は「出力ファイルの拡張子」から推測されるので、指定している場合は不要かもしれません。推測できない場合はtarになります。
  • -o … 出力ファイル名の指定

例:main ブランチをユーザーディレクトリ直下に compressed.zip という名前で出力する

git archive main --format=zip -o ~/compressed.zip

※注意点として、冒頭で作成した.gitattributesmainブランチに含まれていない場合、設定が反映されません。ちゃんと.gitattributesをコミットし、変更が反映されているブランチを圧縮してテストしましょう。

参考

さらに詳しい詳細、特定のブランチの差分だけをアーカイブしたい場合は下記の記事が参考になります。