Git LFSとは

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] [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 には、さらなる圧縮を利用できる複数の出力形式があります。

Git を学習する準備はできていますか?

この対話式チュートリアルを利用しましょう。

今すぐ始める