Git 管理しているプロジェクトをエクスポートする

Git 管理していて、編集中のプロジェクトがあったとして、node_modules/ などを含めずにエクスポートしたり、Zip ファイルにまとめるなどしたい。そんな時のコマンドを2つ紹介する。

目次

管理対象外ファイルを除外して Zip ファイルにまとめたい : git archive

.gitignore に記載されている管理対象外のファイルを除外して、Zip ファイルや TarBall にまとめたい、という場合は、git archive というコマンドが使える。Git 管理しているプロジェクトルートで以下のように叩くと、exports.zip が生成される。

$ git archive HEAD --format=zip --output=exports.zip

HEAD というリビジョンを指定しているところから想像できるかもしれないが、「特定のブランチ」なども対象にできる。Zip ファイルにする場合は --format=zip オプションを指定し、--output オプションで名前を変える。

TarBall が良ければ --format オプションが不要。

$ git archive HEAD --output=exports.tar.gz

管理対象外ファイルを除外して1ディレクトリにまとめたい : git checkout-index

Zip ファイルにする必要はない、という場合は、git checkout-index というコマンドが使える。Git 管理しているプロジェクトルートで以下のように叩くと、exports ディレクトリが生成され、その中に Git 管理対象外のファイルのみが格納される。

$ git checkout-index -a --prefix=exports/

--prefix オプションの末尾に必ず / を入れること。書き忘れると、ディレクトリではなくファイル扱いになってしまうので、よく分からないファイル名でエクスポートされてしまう。


というワケで、「除外したいファイル以外を別のディレクトリにコピーして…」なんてしなくてもコマンド一発で吐き出せた。コレは便利。