SYNOPSIS

git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>]
              [-o <file> | --output=<file>] [--worktree-attributes]
              [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
              [<path>…]

DESCRIPTION

名前付きツリーのツリー構造を含む指定された形式のアーカイブを作成し、それを標準出力に書き込みます。 <prefix> が指定されている場合、アーカイブ内のファイル名の前に追加されます。

「git archive」は、ツリーIDを指定した場合と、コミットIDまたはタグIDを指定した場合の動作が異なります。ツリーIDを指定した場合は、現在の時刻がアーカイブ内の各ファイルの変更時刻として使用されます。コミットIDまたはタグIDを指定した場合、参照されたコミットオブジェクトに記録されたコミット時間が代わりに使用されます。さらに、tar形式が使用されている場合、コミットIDはグローバル拡張paxヘッダー(global extended pax header)に格納されます。 git get-tar-commit-id を使用して抽出できます。ZIPファイルでは、ファイルコメントとして保存されます。

OPTIONS

--format=<fmt>

結果のアーカイブの形式を指定します。 可能な値は、 tarziptar.gztgz と、構成オプション tar.<format>.command を使用して定義された任意の形式です。 --format が指定されておらず、出力ファイルが指定されている場合、フォーマットは、可能であればファイル名から推測されます(たとえば、 foo.zip に書き込むと、出力は zip 形式になります)。 それ以外の場合、出力形式は tar です。

-l
--list

有効なすべての形式を表示します。

-v
--verbose

進捗状況をstderrに報告します。

--prefix=<prefix>/

<prefix>/ をアーカイブ内のパスに追加します。 繰り返すことができ、その右端(rightmost)の値が、すべての追跡ファイル(tracked files)で使用されます。 --add-file--add-virtual-file で使用される値については下記参照。

-o <file>
--output=<file>

アーカイブをstdoutではなく<file>に書き込みます。

--add-file=<file>

追跡されていないファイルをアーカイブに追加します。 繰り返すことで複数のファイルを追加する事ができます。 そのファイルのアーカイブ内のパスは、 この --add-file の前の最後の --prefix オプション (存在する場合) の値と <file> のベース名を連結することによって構築されます。

--add-virtual-file=<path>:<content>

指定されたコンテンツをアーカイブに追加します。 複数のファイルを追加するために繰り返すことができます。 ファイルのアーカイブ内のパスは、 この --add-virtual-file の前の最後の --prefix オプション (存在する場合) の値と <path> を連結することによって構築されます。

<path> 引数は二重引用符文字(")で囲む事ができます。その場合含まれるファイル名は C スタイルの文字列として解釈されます。つまり、バックスラッシュはエスケープ文字として解釈されます。 パスにコロン(:)が含まれている場合、またはパスが二重引用符文字(")で開始または終了する場合、コロンがパスとコンテンツの間の区切り記号として誤って解釈されないように、パスをクォートする必要があります。

ファイル・モードは通常のファイル(regular file)に制限されており、オプションはプラットフォームに依存するコマンド・ラインの制限を受ける場合があります。 重要なケースでは、未追跡ファイル(untracked file)を作成し、代わりに --add-file を使用します。

--worktree-attributes

作業ツリーの .gitattributes ファイルでも属性を探します( [ATTRIBUTES] 参照)。

--mtime=<time>

アーカイブ・エントリの変更時刻を設定します。 このオプションを指定しないと、 <tree-ish> がコミットまたはタグの場合はコミッター時刻が使用され、 ツリーの場合は現在の時刻が使用されます。

<extra>

これは、アーカイババックエンドが理解できる任意のオプションです。次のセクションを参照してください。

--remote=<repo>

ローカルリポジトリからtarアーカイブを作成する代わりに、リモートリポジトリからtarアーカイブを取得します。リモートリポジトリは、 <tree-ish> で許可されるsha1式に制限を課す場合があることに注意してください。詳細については、 git-upload-archive(1) を参照してください。

--exec=<git-upload-archive>

--remote とともに使用して、リモート側の「git-upload-archive」へのパスを指定します。

<tree-ish>

アーカイブを作成するためのツリーまたはコミット。

<path>

オプションのパスパラメータがない場合、現在の作業ディレクトリのすべてのファイルとサブディレクトリがアーカイブに含まれます。1つ以上のパスが指定されている場合、それらのみが含まれます。

BACKEND EXTRA OPTIONS

zip

-<digit>

圧縮レベルを指定します。 値が大きいほど、コマンドはより小さいサイズに圧縮するためにより多くの時間を費やすことができます。 サポートされている値は -0 (格納のみ) から -9 (最良の比率) までです。 指定しない場合のデフォルトは -6 です。

tar

-<number>

圧縮レベルを指定します。 この値は、 tar.<format>.command で設定された圧縮コマンドに渡されます。 サポートされているレベルのリストと、このオプションが指定されていない場合のデフォルトのレベルについては、構成コマンド(configured command)のマニュアル・ページを参照してください。

CONFIGURATION

tar.umask

この変数は、tarアーカイブエントリの許可ビットを制限するために使用できます。 デフォルトは 0002 で、ワールド書き込みビットをオフにします。特別な値「user」は、代わりにアーカイブユーザーのumaskが使用されることを示します。詳細については、 umask(2) を参照してください。 --remote が使用されている場合、リモートリポジトリの設定のみが有効になります。

tar.<format>.command

この変数は、 git archive によって生成されたtar出力をパイプするシェルコマンドを指定します。コマンドは、標準入力から生成されたtarファイル取り込み、シェルを使用して実行され、標準出力に最終出力を生成する必要があります。圧縮レベルのオプションはすべてコマンドに渡されます(例: -9 )。

tar.gz および tgz 形式は自動的に定義され、デフォルトで魔法の(magic)コマンド git archive gzip を使用します。これにより、 gzip の内部実装が呼び出されます。

tar.<format>.remote

trueの場合、 git-upload-archive(1) を介してリモートクライアントで使用できるように <format> を有効にします。 ユーザー定義形式の場合、デフォルトは false ですが、 tar.gz および tgz 形式の場合は true です。

ATTRIBUTES

export-ignore

属性export-ignoreを持つファイルとディレクトリは、アーカイブファイルに追加されません。 詳細については、 gitattributes(5) を参照してください。

export-subst

属性export-substがファイルに設定されている場合、Gitはこのファイルをアーカイブに追加するときにいくつかのプレースホルダーを展開します。詳細については、 gitattributes(5) を参照してください。

注意: デフォルトでは、属性はアーカイブされているツリーの .gitattributes ファイルから取得されることに注意してください。事後に出力が生成される方法を微調整したい場合(たとえば、 .gitattributes に適切な export-ignore を追加せずにコミットした場合)、必要に応じてチェックアウトされた .gitattributes ファイルを調整して --worktree-attributes オプションを使用します。 または、 $GIT_DIR/info/attributes ファイルに、ツリーをアーカイブするときに適用する必要のある属性を保持することもできます。

EXAMPLES

git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)

現在のブランチの最新のコミットの内容を含むtarアーカイブを作成し、それを /var/tmp/junk ディレクトリに抽出します。

git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz

これは、 v1.4.0リリース用の圧縮tarballを作成します。

git archive --format=tar.gz --prefix=git-1.4.0/ v1.4.0 >git-1.4.0.tar.gz

これは、上記と同じですが、組み込みのtar.gz処理を使用します。

git archive --prefix=git-1.4.0/ -o git-1.4.0.tar.gz v1.4.0

これは上記と同じですが、形式は出力ファイル名から推測されます。

git archive --format=tar --prefix=git-1.4.0/ v1.4.0^{tree} | gzip >git-1.4.0.tar.gz

v1.4.0リリース用の圧縮tarballを作成しますが、グローバル拡張paxヘッダー(global extended pax header)はありません。

git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ > git-1.4.0-docs.zip

現在のヘッド のDocumentation/ ディレクトリにあるすべてのものを「git-1.4.0-docs.zip」にプレフィックス「git-docs/」を付けて配置します。

git archive -o latest.zip HEAD

現在のブランチの最新のコミットの内容を含むZipアーカイブを作成します。出力形式は、出力ファイルの拡張子によって推測されることに注意してください。

git archive -o latest.tar --prefix=build/ --add-file=configure --prefix= HEAD

プレフィックス無しの現在のブランチの最新のコミットのコンテンツと、プレフィックス build/ 付きの未追跡ファイル configure を含む tar アーカイブを作成します。

git config tar.tar.xz.command "xz -c"

LZMA圧縮tarファイルを作成するための「tar.xz」形式を構成します。 --format=tar.xz を指定するか、 -o foo.tar.xz のような出力ファイルを作成することで使用できます。

SEE ALSO

GIT

Part of the git(1) suite