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
関連資料
Git チートシート

ソリューションを見る
Bitbucket Cloud での Git の使用方法についてのチュートリアルです。
次の例では、新しいアーカイブを作成して 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.umask
umask 設定オプションを使用すると、出力アーカイブ ファイルに 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 には、さらなる圧縮を利用できる複数の出力形式があります。
この記事を共有する
次のトピック
おすすめコンテンツ
次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。

Bitbucket ブログ

DevOps ラーニング パス
