Git Archive:Git プロジェクトをエクスポートする方法
場合によっては、Git リポジトリのアーカイブ ファイルを作成すると便利です。アーカイブ ファイルは、複数のファイルを 1 つのファイルにまとめたものです。その後、アーカイブ ファイルを抽出して、個々のファイルを再現できます。Git は履歴の保存とチームのコラボレーションにおいて非常に強力ですが、アーカイブ ファイルによって Git のメタデータのオーバーヘッドがなくなり、他のユーザーへの配布や長期のコールド ストレージへの保存が簡単になります。
Git Archive の機能
git archive コマンドは、コミット、ブランチ、ツリーなどの指定された Git Ref からアーカイブ ファイルを作成する Git コマンド ライン ユーティリティです。git archive では、追加の引数を使用してアーカイブの出力を変更できます。
Git エクスポートの例
最も基本的な ~git archive~ の例を次に示します。
git archive --format=tar HEADこのコマンドを実行すると、リポジトリの現在の HEAD ref からアーカイブが作成されます。既定では、git archive はアーカイブの出力を一時的な stdout ストリームにストリーミングします。この出力ストリームを永続的なファイルにキャプチャする必要があります。永続ファイルを指定するには、git archive 出力オプションを使用するか、オペレーティング システムの stdout リダイレクトを使用します。
git archive --output=./example_repo_archive.tar --format=tar HEAD次の例では、新しいアーカイブを作成して example_repo_archive.tar ファイルに保存します。前の例ではどちらでも非圧縮アーカイブ出力が作成されていました。これは --format=tar オプションで示されます。format オプションには、一般的な圧縮ファイル形式 zip および tar.gz も使用できます。これらの format オプションのいずれかを渡すと、圧縮されたアーカイブが生成されます。format 値が渡されない場合、渡された --output オプションから推測されます。
git archive --output=./example_repo_archive.tar.gz --format=tar HEAD ./buildリポジトリの部分的なアーカイブを作成するには、path 引数を渡します。この例では、/build path 引数を archive コマンドに渡します。このコマンドは、/build ディレクトリに保存されているファイルだけを含むアーカイブを 出力します。
オプション
前の例では、git archive の主な使用例を示しました。以下は、git archive に渡すことができるその他のオプションを示します。
--prefix=<prefix>/prefix オプションは、アーカイブ内の各ファイルへのパスを先頭に付加します。これにより、アーカイブの内容が一意の名前空間に抽出されます。
--remote=<repo>remote オプションには、リモート リポジトリの URL が必要です。remote オプションを指定して呼び出すと、git-archive はリモート リポジトリをフェッチし、指定された ref がリモートで利用可能であればアーカイブを作成します。
構成
~git archive~ が尊重するグローバルな Git 設定値がいくつかあります。これらの値は git config ユーティリティを使用して設定できます。
tar.umaskumask 設定オプションを使用すると、出力アーカイブ ファイルに unix レベルの権限のビット制限を指定できます。
tar.<format>.commandこの設定オプションにより、git-archive の出力が実行されるカスタム シェル コマンドを指定できます。これは --output オプションを省略して stdout ストリームを ~git archive~ からカスタム ツールにパイプするのと似ています。これにより、固定のカスタム アーカイブ後処理が可能になります。
tar.<format>.remote有効にすると、リモート クライアントは format タイプのアーカイブをフェッチできます。
Git Archive のまとめ
Git archive は、Git リポジトリの配布可能なパッケージを作成するための便利なユーティリティです。Git archive は、リポジトリの特定の ref を対象とし、その ref の内容のみをパッケージ化できます。Git archive には、さらなる圧縮を利用できる複数の出力形式があります。